2014-12-02 4 views
0

Я не могу найти ответ. У меня есть несколько текстовых полей, и если пользователь вводит/оставляет их, я проверяю, что он что-то изменил, и код ниже работает.Редактирование текста нескольких текстовых полей с функцией

private void txtRegNazov_Enter(object sender, EventArgs e) 
{ 
    if (txtRegNazov.Text == "n/a") 
    {txtRegNazov.Text = "";} 
} 

private void txtRegNazov_Leave(object sender, EventArgs e) 
{ 
    if (txtRegNazov.Text == "") 
    {txtRegNazov.Text = "n/a";} 
} 

Я хотел бы создать функцию, как

public void ClearFieldDataByEnter() 
{ 
    thisHlep.text = ""; 
} 

public void FieldDataByleave() 
{ 
    thisHelp.text = "n/a"; 
} 

И тогда в каждом случае поле будет что-то вроде:

private void txtRegNazov_Enter(object sender, EventArgs e) 
{ 
    thisHelp.Name = name of this txtBox; 
    ClearFieldDataByEnter(); 
} 

Это лишь простой пример того, что я хочу ... Я ищу принципа ... и я еще новичок в C#.

Спасибо

+0

Спасибо вам обоим. Я не знал «отправителя» ... Я все еще ноб. И Sjips, спасибо за всю функцию. –

ответ

1

Rember, что "отправитель", в данном случае, является фактическая TextBox.

TextBox txtSender = (TextBox)sender; 
+0

Точно вы можете использовать одно и то же событие для каждого текстового поля, которое необходимо выполнить, назначив значение «отправитель». – gmiley

0

Вы можете использовать параметр sender, как это:

private void txtRegNazov_Enter(object sender, EventArgs e) 
{ 
    ClearFieldDataByEnter(sender); 
} 

private void txtRegNazov_Leave(object sender, EventArgs e) 
{ 
    FieldDataByleave(sender); 
} 

public void ClearFieldDataByEnter(object text) 
{ 
    textBox = text as TextBox; 
    if (textbox == null) 
     return; 
    if (textbox.Text == "n/a") 
    { 
     textbox.Text = String.Empty; 
    } 
} 

public void FieldDataByleave(object text) 
{ 
    textBox = text as TextBox; 
    if (textbox == null) 
     return; 
    if (String.IsNullOrEmpty(textbox.Text)) 
    { 
     textbox.Text = "n/a"; 
    } 
}