2013-07-29 12 views
5

Robię prosty program w WPF C# i mam wiele TextBoxes - każdyzrobić to samo i jestem bardzo leniwy, aby napisać każde wydarzenie dla każdego TextBox. Czy istnieje sposób, aby obsłużyć wszystkie TextBox przez jedno wydarzenie?Jedno Wydarzenie dla wszystkich TextBoxes

Jest krótki kod:

private void OnMouseLeft(object sender, MouseButtonEventArgs e) 
{ 
    TextBox1.Text = string.Empty; 
    TextBox1.Foreground = Brushes.Black; 
} 
private void OnMouseLeft1(object sender, MouseButtonEventArgs e) 
{ 
    TextBox2.Text = string.Empty; 
    TextBox2.Foreground = Brushes.Black; 
} 

Dziękujemy! :)

Odpowiedz

11

Attach samej procedury obsługi do wszystkich pól tekstowych i używać sender argumentu, aby uzyskać instancję pola tekstowego, które podniesione zdarzenie:

private void OnMouseLeft(object sender, MouseButtonEventArgs e) 
{ 
    TextBox textBox = (TextBox)sender; 
    textBox.Text = String.Empty; 
    textBox.Foreground = Brushes.Black; 
} 
+1

Dzięki, to działa! :) – Facedown

2
private void OnMouseLeft(object sender, MouseButtonEventArgs e) 
{ 
    (sender as TextBox).Text = string.Empty; 
    (sender as TextBox).Foreground = Brushes.Black; 
} 
0

Parametr „nadawca” zostanie sama tekstowym. Napisz więc jedną funkcję i przypisz ją do tej jednej funkcji.

private void OnMouseLeft(object sender, MouseButtonEventArgs e) 
{ 
    var textBox = (TextBox)sender; 
    textBox.Text = string.Empty; 
    textBox.Foreground = Brushes.Black; 
} 
0

Można przypisać wiele zdarzeń do tego samego modułu obsługi zdarzeń. Zdarzenia te mogą pochodzić z tej samej kontroli i/lub różnych kontroli.

 TextBox t = new TextBox(); 
     t.MouseLeftButtonUp += new MouseButtonEventHandler(OnMouseLeft); 
     t.MouseLeftButtonDown += new MouseButtonEventHandler(OnMouseLeft); 
     TextBox t2 = new TextBox(); 
     t2.MouseLeftButtonUp += new MouseButtonEventHandler(OnMouseLeft); 

Następnie wystarczy obsłużyć pole tekstowe, przesyłając nadawcę.

((TextBox) nadawca) .Property = wartość;

0

Dodaj każdy TaxBox do tej samej metody, a następnie kliknij przycisk TextBox, tak jak pokazano, nie zrobiłam tego, ale powinna działać lub przynajmniej sprawiła, że ​​podążasz we właściwym kierunku. Mam nadzieję, że to pomaga.

textBox.MouseClick += new MouseEventHandler(textBox_MouseClick); 

private void textBox_MouseClick(object sender, MouseEventArgs e) 
{ 
     if (e.Button == System.Windows.Forms.MouseButtons.Left) 
     { 
      TextBox textBox = sender as TextBox; 
      textBox.Text = string.Empty; 
      textBox.Forground = Brushes.Black; 
     } 
} 
-1
TextBox T = (TextBox)sender; 

Można użyć nadawcy

0

spróbować tego dla wszystkich tekstowym niedozwolone wartość liczbową tylko tekst ..

$('input[type=text]') .keydown(function (e) {
if (e.shiftKey || e.ctrlKey || e.altKey) { e.preventDefault(); } else { var key = e.keyCode; if (!((key == 8) || (key == 32) || (key == 46) || (key >= 35 && key <= 40) || (key >= 65 && key <= 90))) { e.preventDefault(); } } });

Powiązane problemy