Обработка одной процедурой нескольких объектов без указания имени - C#
Формулировка задачи:
Доброго времени суток.
-на форме есть несколько полей ввода (TextBox), для них сделал процедуру обработки вводимых символов :
Для вызова использую событие KeyPress каждого textBox'a.
Возникли следующие вопросы:
-возможно ли убрать из вызова процедуры имя объекта, если да, то как?
-Если у меня много TextBox'ов, можно ли не писать для каждого объекта, что он делает при событии KeyPress, а, например, автоматически вызывать процедуру Blok при каждой нажатой кнопке? и есть ли в этом смысл?
private void blok(KeyPressEventArgs e, TextBox t) { if ((e.KeyChar >= '0') && (e.KeyChar <= '9')) { return; } if (e.KeyChar == '.') e.KeyChar = ','; if (e.KeyChar == ',') { if ((t.Text.IndexOf(',') != -1) || (t.Text.Length == 0)) { e.Handled = true; } return; } if (char.IsControl(e.KeyChar)) { if (e.KeyChar == (char)Keys.Enter) { button1.Focus(); } return; } e.Handled = true; }
blok(e, textBox1);
Решение задачи: «Обработка одной процедурой нескольких объектов без указания имени»
textual
Листинг программы
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { foreach (TextBox tb in this.Controls.OfType<TextBox>()) { tb.KeyPress += new KeyPressEventHandler(tb_KeyPress); } } void tb_KeyPress(object sender, KeyPressEventArgs e) { TextBox t = sender as TextBox; if ((e.KeyChar >= '0') && (e.KeyChar <= '9')) { return; } if (e.KeyChar == '.') e.KeyChar = ','; if (e.KeyChar == ',') { if ((t.Text.IndexOf(',') != -1) || (t.Text.Length == 0)) { e.Handled = true; } return; } //if (char.IsControl(e.KeyChar)) //{ // if (e.KeyChar == (char)Keys.Enter) // { // button1.Focus(); // } // return; //} e.Handled = true; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д