2016-08-24 2 views
-1

У меня есть много элементов управления TextBox. Для каждого элемента управления TextBox я получаю свои события text_Changed и key_Press. Из-за этого моя Form.cs становится слишком переполненной. Мой вопрос в том, можно ли сделать это свободным? Некоторые события состоят только из одной функции.Многократное событие TextChanged и KeyPress

Пример кода:

private void txtItem_TextChanged(object sender, EventArgs e) 
{ 
    showButtonSave(); 
} 

private void txtItem_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    showButtonSave(); 
    char ch = e.KeyChar; 
    if (ch == (char)Keys.Enter) 
    e.Handled = true; 
} 

private void txtItem2_TextChanged(object sender, EventArgs e) 
{ 
    showButtonSave(); 
} 

private void txtItem2_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    showButtonSave(); 
    char ch = e.KeyChar; 
    if (ch == (char)Keys.Enter) 
    e.Handled = true; 
} 

ответ

1

На вашем txtItem2 вы можете перейти к его свойствам и там, где он говорит, что ontextchange вы должны видеть, что это установлено в txtItem2_KeyPress изменения, что txtItem_KeyPress тогда они оба используют

private void txtItem_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    showButtonSave(); 
    char ch = e.KeyChar; 
    if (ch == (char)Keys.Enter) 
    e.Handled = true; 
} 
+0

Это может быть самым простым путем и ответьте на мою проблему. спасибо за это –

+0

Имейте в виду, что ваше преобразование имен действительно не подходит для этого решения. потому что метод говорит 'txtItem', я бы сделал его более универсальным. Кроме того, имейте в виду, что если вы сделаете что-нибудь в этом методе, обе кнопки будут делать код сейчас. вы, однако, сможете обнаружить, какая кнопка была нажата, используя 'sender (object)' – Neil

+0

Спасибо, что сказал мне, что сэр. Но я думаю, что это не повлияет на поток, который я хотел. Я надеюсь, что это так. –

1

Вы можете создать одно событие для каждого типа (txtItem_TextChanged/txtItem_KeyPress) и отобразить его на всех TextBox. С помощью sender вы можете получить фактический контроль и управлять, как хотите.