Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[Visual C#/C++] Przekazywanie tekstu między oknami.

#1
[Visual C#/C++] Przekazywanie tekstu między oknami.
Witam! Tak jak w temacie, muszę przesłać tekst między dwoma oknami(w pierwszym jest generowany, w drugim wyświetlany). Wpadłem na pomysł, aby użyć stringa. Niestety, ale mam problem, aby zadeklarować go globalnie między dwoma klasami. Czy mógłby ktoś mi pomóc coś z tym zrobić?
 System operacyjny: windows_seven Przeglądarka: firefox
#2
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
Na oknie źródłowym stwórz sobie event. Przy tworzeniu okna docelowego, podepnij metodę z tego okna do eventu okna źródłowego. W zdarzeniu, które ma przesłać string (albo cokolwiek innego) odpalisz event przekazując mu ten string, a odpowiednia metoda z okna docelowego zostanie wywołana.
Event z jednym argumentem możesz zrobić tak:
Kod:
public event Action<string> Zdarzenie;
a zawołać
Kod:
Zdarzenie(jakisString);
Warto wcześniej sprawdzić, czy Zdarzenie != null.
Możesz też zrobić inaczej, tj. zamiast Action<> użyć EventHandler. Tylko musisz podać typ, bo EventArgs nie przenoszą danych. Co za tym idzie, musisz zrobić jakąś własną klasę z parametrami zdarzenia, która dziedziczy po EventArgs.

Zamiast eventów możesz użyć delegatów. W zasadzie event to pod spodem delegat, ale możliwość istnieje. Przy czym IMO eventy lepiej wyglądają Język (i mają parę innych zalet).

Wystrzegaj się zmiennych globalnych. Jeśli potrzebujesz mieć dostęp do czegoś w całej aplikacji, możesz zrobić singleton (http://www.yoda.arachsys.com/csharp/singleton.html).
A SQL query goes into a bar, walks up to two tables and says, "Can I join you?"

[Obrazek: 15j3phh4_1 kopia2a.jpg]
 System operacyjny: windows_seven Przeglądarka: opera
#3
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
Niestety, ale dostałem tego typu błędy:
Kod:
c:\users\...\desktop\restock bot\restock bot\Form1.h(13): error C2059: syntax error : 'public'
1>c:\users\...\desktop\restock bot\restock bot\Form1.h(13): error C3225: generic type argument for 'T' cannot be 'System::String', it must be a value type or a handle to a reference type
1>c:\users\...\desktop\restock bot\restock bot\Form1.h(13): error C3708: 'Action': improper use of 'event'; must be a member of a compatible event source
1>c:\users\...\desktop\restock bot\restock bot\Form1.h(13): error C3225: generic type argument for 'T' cannot be 'System::String', it must be a value type or a handle to a reference type
1>c:\users\...\desktop\restock bot\restock bot\Form1.h(246): error C3861: 'Generator': identifier not found
A mój kod wygląda tak:
Kod:
public event Action<String> Generator;
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e)
    {
        Generator("lolssdosajdo");
                // okno potomne
        Tablica^ tab = gcnew Tablica();
        tab->ShowDialog();
    }
 System operacyjny: windows_seven Przeglądarka: firefox
#4
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
Takie pytanko pomocnicze. Czy okno drugie (w którym ma być wyświetlany tekst) może być utworzone w oknie pierwszym, z którego tekst ma być wysłany? To by bardzo ułatwiło sprawę. Jeśli nie, to jednak chyba delegaty.
Poczekam na Twoją odpowiedź, i zobaczymy.
Pozdrawiam.
Ajgor
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#5
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
Jeśli chodzi ci o MDI, to nie chciałbym takie rozwiązania, wolałbym, żeby pojawiło się nowe okno z wypisaną wartością zawartą w tym stringu. Jeśli coś, nowe okno tworzę na podstawie nowej klasy(wygodniej jest mi ustawiać kontrolki).
 System operacyjny: windows_seven Przeglądarka: firefox
#6
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
Nie. Nie chodziło mi o MDI. Chodziło mi o utworzenie obiektu klasy Frame2 w evencie Load okna Frame1. Później z Frame1 masz bezpośredni dostęp do funkcji publicznych we Frame2. W MDI też musiał byś używać delegatów. A ja szukam sposobu na uproszczenie sprawy.
Pozdrawiam.
Ajgor
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#7
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
Hmmm.... czy chodzi Ci Ajgor o zagnieżdżoną klasę ?Oczko
Czemu jestem uzależniony od gry, która mnie zwyczajnie wkurza ? Wściekły
 System operacyjny: windows_xp_2003 Przeglądarka: chrome
#8
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
(01.04.2011, 22:38)Missqu napisał(a): Hmmm.... czy chodzi Ci Ajgor o zagnieżdżoną klasę ?Oczko

Oj. Na prawdę tak trudno zrozumieć, o co mi chodzi? Tak niejasno tłumaczę? (Nioe jest to złośliwe pytanie retoryczne, ale na prawdę pytam. Jeśli niejasno, to postaram się jaśniej).
Masz klasę Frame1, i klasę Frame2. Frame1 powstaje w trakcie tworzenia projektu. Frame2 dwa musisz dodać do projektu (prawoklik w Solution explorer, Add->Windows Form). W klasie Frame1 tworzysz obiekt klasy Frame2:
Kod:
Frame2 ramka = new Frame2();

Następnie tworzysz eventa Load dla Frame1 (klikasz dwa razy na ramce okna Frame1), i w nim właczasz drugie okienko:
Kod:
ramka.Show();

I w momencie włączenia programu otwierają się dwa niezależne okna. Tyle, że z Frame1 masz bezpośredni dostęp do publicznych elementów okna "ramka" (obiektu klasy Fram2). Na Frame2 umieszczasz pole tekstowe. Na przykład textBox1.
Następnie gdzieś w ciele Frame2 tworzysz publiczną metodę:

Kod:
public void zmienText(string ciagTekstowy)
        {
            textBox1.Text = ciagTekstowy;
        }
A w przycisku (czy tam gdzie potrzebujesz) na Frame1 umieszczasz wywołanie tej metody:

Kod:
ramka.zmienText(textBox1.Text);

Ot i cała filozofia. Wiem, że teoretycznie na ekranie wydaje się to zagmatwane. Ale odpal VisualC# i prześledź całość, a zobaczysz, jakie to proste i logiczne Wesoły Oczywiście uzależnia okno2 od okna1. Ale jeśli tego chcesz uniknąć, to zostają tylko delegaty.
Pozdrawiam.
Ajgor
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#9
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
MiXXen -> Może troszkę zamieszałem, bo mój kod jest w czystym C#. Czyli pewnie musisz wywalić public, zamienić event na System::event^ i String na System::String^ (nie wiem czy tak będzie, musiałbyś potestować).

Jeśli Tablica jest Twoim oknem, które chcesz otworzyć i w tym momencie przekazać jakieś dane, to możesz to zrobić równie dobrze przez konstruktor (który musisz dopisać do okna) albo przez jakieś właściwości.

Zobacz na stronkę http://www.functionx.com/vccli/index.htm - tu masz bardzo dużo informacji o C++/CLI.
A SQL query goes into a bar, walks up to two tables and says, "Can I join you?"

[Obrazek: 15j3phh4_1 kopia2a.jpg]
 System operacyjny: windows_seven Przeglądarka: opera
#10
RE: [Visual C#/C++] Przekazywanie tekstu między oknami.
o tu już się wyłączam, ale.. coś mi tu śmierdziOczko Nie wiem co jednak coś mi nie pasuje, pewno znowu Cię źle zrozumiałem...
Atoff-top
Looknij w swój podpis, myślę, że złamałeś tą zasadę Szczerbol

Pozdrawiam !
Czemu jestem uzależniony od gry, która mnie zwyczajnie wkurza ? Wściekły
 System operacyjny: windows_xp_2003 Przeglądarka: chrome
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
komunikacja między dwoma oknami c#przekazywanie danych miedzy formami c++visual c++ przekazywanie zmiennychwymiana danych między formami c#c++ przesyłanie zmiennych między ramkamiwindows form przekazywanie pomiędzy okienkamieventy c#c# zmiana wartości zmiennej w innym okniec# windows forms przesyłanie danych między oknamic# dziedziczenie obiektów pomiędzy formatkami

Podobne wątki ([Visual C#/C++] Przekazywanie tekstu między oknami.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Transfer plików via FTP Visual Basic FireBytes 1 2019 17.11.2018, 21:07
Ostatni post: Szachista
  [VBA] Przenoszenie danych między formularzami Pioro 4 6058 23.04.2018, 11:48
Ostatni post: broda99
  [VB.NET] przenoszenie danych między formami Pioro 15 17446 19.11.2017, 03:48
Ostatni post: broda99

Skocz do:


Wybrane wątki ([Visual C#/C++] Przekazywanie tekstu między oknami.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Pomoc w VBA excel Woof 3 7054 19.01.2018 09:36
Ostatni post: Woof
Ściana [CMD] Dwa zadanka które mnie przerosły MihuJ 0 6365 11.01.2018 15:52
Ostatni post: MihuJ
  Czy programowanie jest dla mnie? Co powinienem robić? Kumiku 2 7089 05.01.2018 20:14
Ostatni post: broda99
  SQL zapisanie w rekordzie nazwy zalogowanego użytkownika karlos1323 11 2886 30.12.2017 11:08
Ostatni post: koneton
  Mały algorytm bartek164 3 7134 25.12.2017 10:41
Ostatni post: Szachista
  Git - kompilacja pobranej apki ~Anonim 6 6971 23.12.2017 14:59
Ostatni post: ~Anonim
  wczytywanie zmiennej z innego pliku batch grymariusza 7 7633 18.12.2017 17:34
Ostatni post: broda99
  Jaki kod pod takie okno formularza w visualbasicu 2010? aktywny27 11 16469 26.11.2017 23:26
Ostatni post: Ajgor
  Jaki projekt na pythona bartek164 0 6923 25.11.2017 19:59
Ostatni post: bartek164
  [VB.NET] przenoszenie danych między formami Pioro 15 17446 19.11.2017 03:48
Ostatni post: broda99
  Java.android.Tworzenie akcji Blendow 0 7015 16.11.2017 23:38
Ostatni post: Blendow
  Proszę o pomoc, cmd! PanKasztan4 1 6447 16.11.2017 22:05
Ostatni post: broda99
  Jaki kod w visual basicu 2010 express? aktywny27 5 7630 07.11.2017 11:01
Ostatni post: Ajgor
  Sprawdzanie wygranej. PixelFullHD 1 7241 03.11.2017 18:38
Ostatni post: Ajgor
  Algorytm Genetyczny C pr1991 3 7544 26.10.2017 11:52
Ostatni post: Szachista