Krok 5: Dodawanie wprowadzić programy obsługi zdarzeń dla formantów NumericUpDown
Być może zauważyłeś coś nieparzysta dotyczące pisania liczb w NumericUpDown kontroli.Aby rozwiązać ten problem, należy dodać moduł obsługi zdarzeń Enter.
Aby zobaczyć zachowanie formantu NumericUpDown
Uruchom program i uruchom grę.Suma NumericUpDown kontroli powinny mieć migającego kursora w niej obok 0 (zero).
Typ 3, i 30 jest wyświetlany.Typ 5, i 350 jest wyświetlany, ale po drugim, zmienia się w 100.
Przed tego problemu zastanowić, co się dzieje.Należy wziąć pod uwagę dlaczego 0 zniknęła, gdy wpisana 3. Należy wziąć pod uwagę dlaczego 350 zmieniona na 100, i dlatego nastąpiło opóźnienie, zanim go zmienić.
[!UWAGA]
Chociaż może się wydawać dziwnych zachowań, istnieje wyjaśnienie.Po kliknięciu przycisku uruchomić przycisku, przycisk Enabled właściwość jest ustawiona na False, i przycisk jest wygaszony i niedostępny.Program wyszukuje kontroli z następnej najmniejszej wartości TabIndex — suma NumericUpDown kontroli — i zmiany fokusu do formantu.Kiedy używać klawisza TAB, aby przejść do NumericUpDown kontroli, ją automatycznie z kursorem w chwili rozpoczęcia kontroli, która jest, co powoduje numerów typu wykazuje się z lewej i prawej nie.Po wprowadzeniu liczbę znajdującą się powyżej MaximumValue właściwość, która jest ustawiony na 100, zastępuje wprowadzoną wartością maksymalną liczbę.
Aby dodać moduł obsługi zdarzeń Enter dla formantu NumericUpDown
Aby temu zapobiec nietypowym i ułatwić korzystanie z programu, należy dodać programu obsługi zdarzeń dla każdego NumericUpDown kontroli zdarzenia Enter.Użyj zdarzenia strony w Właściwości okno dialogowe, aby dodać moduł obsługi zdarzeń Enter sumy NumericUpDown formantu o nazwie answer_Enter.
Okno dialogowe właściwości
Kod powinien wyglądać następująco.
Private Sub answer_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sum.Enter ' Select the whole answer in the NumericUpDown control. Dim answerBox = TryCast(sender, NumericUpDown) If answerBox IsNot Nothing Then Dim lengthOfAnswer = answerBox.Value.ToString().Length answerBox.Select(0, lengthOfAnswer) End If End Sub
private void answer_Enter(object sender, EventArgs e) { // Select the whole answer in the NumericUpDown control. NumericUpDown answerBox = sender as NumericUpDown; if (answerBox != null) { int lengthOfAnswer = answerBox.Value.ToString().Length; answerBox.Select(0, lengthOfAnswer); } }
Chociaż może to wyglądać złożonych początkowo, łatwiej zrozumieć wyszukiwania na krok po kroku.Po pierwsze, spójrz na górną metody: object sender w języku C# lub sender As System.Object w języku Visual Basic.To oznacza, że wewnątrz metodę, ilekroć używać sender, odnosi się do NumericUpDown formantu, którego zdarzenie Enter jest wyzwalania.Tak, w pierwszym wierszu metody, można określić nie tylko obiekt, ale specjalnie NumericUpDown kontroli.(Co NumericUpDown kontroli obiektu, ale nie każdy obiekt jest NumericUpDown sterowania.) Następny wiersz sprawdza, czy answerBox został pomyślnie przekonwertowane (rzutowanie) z obiektu NumericUpDown kontroli.W razie niepowodzenia, miałoby wartość null (C#) lub nic (Visual Basic).Trzecia linia znajdzie długość odpowiedź, która jest aktualnie wyświetlane w NumericUpDown kontroli.Czwarty wiersz nakazuje NumericUpDown formantu, aby wybrać odpowiedź.Teraz, gdy użytkownik nawiguje do formantu, pożary to zdarzenie, co powoduje, że go wybrać odpowiedź.Tak szybko, jak rozpoczęcia pisania przez użytkownika poprzedniej odpowiedzi jest wyczyszczone i zastąpiony nową odpowiedź.
Po tej obsługi zdarzeń jest w miejscu, przejdź do Windows Forms Designer i wybierz różnica NumericUpDown kontroli.Przejdź do zdarzenia strony w Właściwości okno dialogowe, przewiń w dół do zdarzenia Enter i wybierz moduł obsługi zdarzeń, który właśnie dodany.
Następnie wykonaj takie same dla produktu i iloraz NumericUpDown kontroli.
Zapisz i uruchom program.Zachowanie nieparzystej nie powinien wystąpić.
Aby kontynuować, lub przejrzeć
Aby przejść do następnego kroku samouczek, zobacz Krok 6: Dodawanie Problem odejmowania.
Aby powrócić do poprzedniego kroku samouczek, zobacz Krok 4: Dodaj metodę CheckTheAnswer().