Visual c++ dwie formy

2012-02-02 13:07

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

Witam
Przeszukałem już tyle tematów i nic nie wyczytyałem co mogłoby mi pomóc.
Wiem, że można przekazać zmienna z formy1 do formy2 przez extern ale wtedy zmienna musi być globalna(choć nie jestem tego pewien) czego chce uniknąć. Więc proszę o prosty przykład jak można używać zmiennej pomiędzy formami.

edytowany 1x, ostatnio: madmike, 2012-02-02 13:10

Pozostało 580 znaków

2012-02-02 13:27

Rejestracja: 9 lat temu

Ostatnio: 5 miesięcy temu

Lokalizacja: Kosmos

0

Poprzez konstruktor?


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2012-02-02 13:27

Rejestracja: 10 lat temu

Ostatnio: 3 lata temu

Lokalizacja: Przedmonitorze Górne

0

Najprościej byłoby, aby forma1 miała jako swoje pole referencję do formy2.


I fart u die.

Pozostało 580 znaków

2012-02-02 13:30

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

Dzięki, ale moglibyście podać przykład w postaci kodu kiedy mamy dwie formy, żeby przekazywac zmienne z form do form2 i form2 do form

Pozostało 580 znaków

2012-02-02 13:34

Rejestracja: 9 lat temu

Ostatnio: 5 miesięcy temu

Lokalizacja: Kosmos

0

Masz jedną formę Form1 i drugą Form2. Obydwie mają konstruktor, zapewne ta pierwsza to twoja główna więc jej konstruktor wywołuje się tuż po odpaleniu głównego wątku,. Konstruktor tej drugiej wywołuje się z twoją inicjatywą, gdzieś w programie.

Form2^ form = gcnew Form2(...);

... to parametry twojej formy, przekazujesz tam co chcesz, pamiętając żeby w deklaracji konstruktora było to co masz zamiar przekazać.
Przepraszam za ew. błędy w składni, na co dzień nie mam styczności z C++/CLI.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2012-02-02 13:43

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

Kurcze nie łapie trochę.
Mam Form1 do której dołączyłem include form2 i teraz w form1 pod buttonem mam

                                int liczba = 12;
              okno_pomocnicze^ nowe_okno = gcnew okno_pomocnicze();
                               nowe_okno->ShowDialog();

i chce odczytać wartość tej zmiennej w formie2 np wyświetlając ja w textboxie.

Pozostało 580 znaków

2012-02-02 13:49

Rejestracja: 9 lat temu

Ostatnio: 5 miesięcy temu

Lokalizacja: Kosmos

0

Zobacz deklarację i definicję konstruktora Form2, tam do paramów dodaj int'a i wstaw go w konstruktor. Chyba, że w C++/CLI się tak nie da? Chyba niemożliwe.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał

Pozostało 580 znaków

2012-02-02 13:50

Rejestracja: 12 lat temu

Ostatnio: 2 lata temu

0

ShowDialog(IWin32Window^ owner) - czyli to okno które otiwera bedzie ownerem

I Form^ owner dla okna otwieranego

nie wiem dokladnie jak to w C++ by wygladalo ale w C# jest to tak
Form2 noweOkno = new Form2();
noweOkno.ShowDialog(this);

w nowym oknie dodaje Form1 owner;
no a w noweOkno_Load
owner = this.Owner;

Sorry jeśli namieszałem i tak nie jest w c++.

edytowany 1x, ostatnio: ubuntuser, 2012-02-02 13:52
Ale tą zmienną on ma w event'cie buttona zadeklarowaną to i tak nawet jak będzie z Form2 do Form1 miał dostęp jako child, to nie będzie widział tej zmiennej. - xeo545x39 2012-02-02 13:52

Pozostało 580 znaków

2012-02-02 14:13

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

Konstruktor form2 wyglada tak:
public:
okno_pomocnicze(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
chodzi CI o to żeby zrobić coś takiego:?
public:
okno_pomocnicze(void)
{
InitializeComponent();

<liczba>; // //TODO: Add the constructor code here // } gdzie zmienna liczba zadeklarowana jest w form1 pod buttonem private: System::Void button1_Click(System::Object sender, System::EventArgs e) { int liczba = 12; okno_pomocnicze^ nowe_okno = gcnew okno_pomocnicze(); nowe_okno->ShowDialog(); }

Pozostało 580 znaków

2012-02-02 14:27

Rejestracja: 9 lat temu

Ostatnio: 5 miesięcy temu

Lokalizacja: Kosmos

0
// w Form2:
private:
int liczba; // zmienna składowa klasy Form2
(...)
public:
okno_pomocnicze(int parametr)
{
    InitializeComponent();

    this->liczba = parametr;          
}
(...)

// ----------------------------------------

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
{
    int liczba = 12;
    okno_pomocnicze^ nowe_okno = gcnew okno_pomocnicze(liczba);
    nowe_okno->ShowDialog();
}

Teraz w klasie Form2 masz zadeklarowane pole, które ma wartość taką jaką mu przekażesz w konstruktorze.

Poczytaj o konstruktorach, bo widać, że jesteś nie obeznany w temacie.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
edytowany 3x, ostatnio: xeo545x39, 2012-02-02 14:32
uprzedziłeś mnie 2 min :P - ubuntuser 2012-02-02 14:30
zdarza się, trzabyło zostawić posta, może być + dostał ;p - xeo545x39 2012-02-02 14:32

Pozostało 580 znaków

2012-02-02 15:44

Rejestracja: 8 lat temu

Ostatnio: 7 lat temu

0

Dzięki za pomoc. Udało mi się poprzez konstruktor ale w C# :) Teraz mogę korzystać ze zmiennych w obie strony.

Pozostało 580 znaków

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0