Sprawdzanie tagów przycisków przy użyciu pętli foreach

0

Otóż w moim programie muszę w pewnym momencie sprawdzić, czy wartość tagu przypisanego do przycisku jest mniejsza od 4. Wszystko płynnie się kompiluje i jest w porządku do czasu użycia funkcji przez program.
Wyskakuje w tym czasie błąd debuggera: "NullReferenceException was unhandled - Object reference not set to an instance of an object.". Próbowałem wszystkich kombinacji i modyfikacji, ale wszystko spełzło na niczym.
Druga sprawa jest taka, że gdy chcę nadać testowo jakiemuś wylistowanemu z pętli foreach przyciskowi dowolną nazwę, to wszystko jest w porządku i nie wyskakuje żaden błąd, ale nazwa i tak się nie zmienia.

Oto fragment kodu z podkreśleniem owego miejsca, w którym występuje błąd:

 
Form forma = new Form1();
foreach ( Control ctr in forma.Controls)
            {
                if (ctr is Button)
                {
                    (ctr as Button).Text = "cośtam";   //to jest właśnie to testowe nadanie nazwy
                   <b> if (Int32.Parse((ctr.Tag.ToString())) <= 4) { }; //fragment, w którym wykrzacza się debugger</b>                   
                }
            }
0

Sprawdzaj czy ctr.Tag != null. Po drugie uzyj Int32.TryParse - nie poleci wyjatkiem jesli Tag nie bedzie zawieral niczego podobnego do liczby.

0
bj napisał(a)

//fragment, w którym wykrzacza się debugger
To nie dubugger się wykrzacza tylko twój program a debugger to wyłapuje ;)

0

Dzięki johny - pomogło. Pozostaje mi tylko dowiedzieć się, jak rozwiązać drugi problem, który tu przedstawiłem. Może ktoś wie, co zrobiłem źle?

PS. adf88 wiem - tak jakoś mi sie dziwnie napisało

0

Nie bardzo zrozumialem drugi problem.

0

Jak widzisz w kodzie, chcę zmienić text przyciskom(w zasadzie to tyczy się dowolnej zmiany wartości dla przycisków). Robię to za pomocą: (ctr as Button).Text = "cośtam"; . Jednak pomimo bezbłędnego wykonania funkcji, nic się nie dzieje i text nadal zostaje taki jaki był wcześniej.

0

A czy przyciski sa bezposrednio na formatce czy zawarte np. w panelu? Sprawdz debugerem czy w ogole kod z ifa sie wykonuje. Kod wyglada calkiem ok.

0

Są one bezpośrednio na formie i foreach je uwzględnia. If też przechodzi.

0

No to moze cos pozniej ustawia tekst z powrotem? Sprawdz zaraz po przejsciu petli czy text zostal zmieniony. To powyzej zdecydowanie wystarczy, zeby zmienic tekst...

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