2013-04-08 6 views
5

Mam następujący kod w vb.net napisany w przycisku.vb.net odnoszące się do utworzonego przez program formularza za pośrednictwem nowego

dim x as new frm_raw_infosheet 

za każdym razem, gdy kliknę przycisk, program utworzy nowe wystąpienie formularza, którego chcę.

Moje pytanie brzmi: w jaki sposób będę mógł odnieść się do każdej z nowo utworzonych formularzy? na przykład, kliknąłem przycisk 3 razy, w jaki sposób programowo ukryję utworzony przeze mnie formularz 2 za pomocą przycisku?

Próbowałem

x.name = "Form" & incrementingvariable 

jednak nie jestem do końca pewien, jak mam zamiar odnieść się do niego.

Aby moje pytanie bardziej jasne, powiedzmy incrementingvariable zawiera numer 2

incrementingvariable = 2 

x zawiera teraz nazwę "Form2"

to jednak zwraca błąd

Form2.enabled = false 

Nie mogę odnieść się do Form2, ponieważ .Net mówi, że "Form2" nie istnieje!

EDIT

Rozumiem, minęło trochę czasu odkąd poprosił, ale tutaj jest aktualizacja

Na listboxes są dosłownym nazwy każdej postaci, które ja przechowywane przy użyciu Listbox1.items.add(x.Name).

Jak zatem wywołać instancję w kolekcji? Powiedz, że chcę, aby formularz na liście był widoczny?

Odpowiedz

1

odnoszę się do kwestii edycja: Zamiast dodawania nazwy form do pola listy można dodać Formularz sprzeciwia się:

Listbox1.Items.Add(x) 

Jeśli ustawisz właściwość ListBox DisplayMember do nazwy, nazwa formularza jest wyświetlana w polu listy (tak jak poprzednio).
Teraz jesteś w stanie uzyskać dostęp do obiektu formularza bezpośrednio za pomocą metod gromadzenia i nazywają przedmioty ListBox”na nich:

DirectCast(ListBox1.Items(2), Form).Enabled = False 

Ten przykład dostęp trzecią formę w ListBox (oczywiście będziemy chcieli, aby upewnić się, że nie uzyskuj dostępu do indeksu, który nie jest obecny, właściwość Count jest pomocna w tym zakresie).
Ponieważ elementy są przechowywane jako obiekty, musisz rzucić je do obiektu formularza, zanim uzyskasz dostęp do elementów zdefiniowanych w klasie Form.

+0

Dziękuję bardzo za to. –

3

Wszystko zależy od tego, jak program ma działać.

Jeśli masz otwartą tylko jedną instancję formularza, możesz zapisać referencję zwróconą przez new w zmiennej trwałej, np. zmienna instancji. Następnie można odwołać się do starej formy i zamknąć ją później.

Jeśli chcesz śledzić więcej niż jeden formularz, możesz zapisać referencję zwróconą przez new w kolekcji, która może być również zmienną instancji.

+0

Dzięki za poświęcenie czasu na odpowiedź Marcusa! Dokładnie w jaki sposób zadeklarujesz zmienną instancji? jak się do tego odniesiecie? Mam na myśli, powiedzmy, że stworzyłem tę zmienną instancji, w jaki sposób zmienię jej właściwość tekstową? . Intellisense kopie .Net, gdy wpisuję zmienną, która nie istnieje. –

+0

Cześć! Dokonałem edycji tego pytania. –

Powiązane problemy