2013-07-29 8 views
5

Sto facendo un programma semplice in WPF C# e ho molti TextBoxes - ogni TextBox fa la stessa cosa e sono molto pigro a scrivere ogni evento per ogni TextBox. Quindi, Esiste un modo per servire tutti gli di un evento?Un evento per tutti i box di testo

c'è un codice breve:

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; 
} 

Thank You! :)

risposta

11

Fissare stesso gestore per tutti i caselle di testo e utilizzare sender argomento per ottenere l'istanza di testo che ha sollevato evento:

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

Grazie, funziona! :) – Facedown

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

Il parametro 'mittente' sarà il TextBox in sé. Quindi scrivi solo una funzione e assegnale tutte a quella funzione.

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

È possibile assegnare più eventi allo stesso gestore eventi. Questi eventi possono provenire dallo stesso controllo e/o controlli diversi.

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

Quindi basta gestire quale casella di testo lanciare il mittente.

(mittente TextBox). Proprietà = valore;

0

Aggiungere ogni taxBox allo stesso metodo e quindi fare clic su TextBox come mostrato, non l'ho fatto ma dovrebbe funzionare o almeno andare nella giusta direzione. Spero che aiuti.

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; 

È possibile utilizzare mittente

0

provare questo per tutto il testo non ammesso valore numerico unico testo ..

$('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(); } } });