Przykład jest banalny. Chce pokazać, że da się coś takiego zrobić. Łatwo.
Jak piszę na stronie MSDN: Klasę Label można dziedziczyć (w deklaracji nie ma słowa-klucz sealed).
Pamięcią kontrolki będzie tablica stringów zawierająca 10 poprzednich ustawień tekstu które zostały przypisane do kontrolki.
Definicja własnej kontrolki.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class LabelWithMemory : Label { private string[] memory = new String[10]; public string this[int index] { get { if (index >= 0 && index < 10) return memory[index]; else return ""; } set { if (index >= 0 && index > 10) memory[index] = value; } } } |
Dostęp do kolejnych komórek pamięci jest przez nazwę naszej labelki i indeks.
Jak to już mamy, pojawił się nowy element w Toolboksie, nasza nowa kontrolka
.
W trybie Design przeciągamy ją w wybrane miejsce.
Krok dalej…
Tak wygląda aplikacja na której wykorzystamy wykonaną przez nas lablekę.

W przypadku jak ktoś naciśnie na przycisk zmiany tekstu, to obecny jest zapisany w nazwa labeli oraz w pamięci stringów. Tekst jest pobierany z tekstboksa
1 2 3 4 5 6 7 8 9 | private void btnTextChange_Click(object sender, EventArgs e) { lbMemo.Text = tbTextChange.Text; for (int i = 9; i > 0; i--) { lbMemo[i] = lbMemo[i-1]; } lbMemo[0] = lbMemo.Text; } |
Jeżeli nastąpi zmiana tekstu, to wszystkie poprzednie zostają ‘zepchnięte’ o jeden indeks niżej. Pierwszy indeks przechowuje obecną, najnowszy tekst.
Klawisze od 1-8 korzystają z wspólnej funkcji.
1 2 3 4 5 6 7 | private void NumberButton_Click(object sender, EventArgs e) { Button btnNumer = (Button)sender; int index = int.Parse(btnNumer.Text); lbMemo.Text = lbMemo[index]; } |
Funkcja ściąga tekst z klawisza i parsuje go jako cyfrę tak powstaje indeks z którego trzeba ściągnąć tekst.
I tak doszliśmy do końca
Jeśli chciałbyś kod źródłowy to nie krępuj się, prześlij e-mail do mnie(soltys z dopiskiem uznam.org).
1 Comment until now
można by było zrobić tak, by zapisywało tekst przy czymś takim:
label1.Text = “Jakis tekst”;
korzystając ze zdarzenia TextChanged. Tylko wtedy chyba lepiej jest użyć kolejki niż tablicy stringów
Add your Comment!