Как создать обработку событий для массива TextBox - PullRequest
3 голосов
/ 21 марта 2010

Я создаю массив:

TextBox[] textarray = new TextBox[100];

Затем в цикле установите эти параметры, все элементы массива, расположенные вiformGrid1

textarray[i] = new TextBox();
        textarray[i].Height = 30;
        textarray[i].Width = 50;
        uniformGrid1.Children.Add(textarray[i]);

Как создавать события Click или DoubleClick, чтобы массив всех элементов?
Извините, мой английский.

Ответы [ 3 ]

2 голосов
/ 21 марта 2010
 public static void blah()
        {
            TextBox[] textarray = new TextBox[100];
            List<TextBox> textBoxList = new List<TextBox>();
            for (int i = 0; i < textarray.Length; i++)
            {
                textarray[i] = new TextBox();
                textarray[i].Height = 30;
                textarray[i].Width = 50;

                // events registration
                textarray[i].Click += 
                      new EventHandler(TextBoxFromArray_Click);
                textarray[i].DoubleClick += 
                      new EventHandler(TextBoxFromArray_DoubleClick);
            }
        }

        static void TextBoxFromArray_Click(object sender, EventArgs e)
        {
            // implement Event OnClick Here
        }

        static void TextBoxFromArray_DoubleClick(object sender, EventArgs e)
        {
            // implement Event OnDoubleClick Here
        }

EDIT:

Лучший / рекомендуемый способ регистрации событий согласно @ Aaronaugh : совет:

textarray[i].Click += TextBoxFromArray_Click;
textarray[i].DoubleClick += TextBoxFromArray_DoubleClick;
2 голосов
/ 21 марта 2010

Просто добавьте в ваш обработчик событий щелчка или двойного щелчка. Например, чтобы перехватить события двойного щелчка:

textarray[i] = new TextBox();
textarray[i].Height = 30;
textarray[i].Width = 50;
textarray[i].MouseDoubleClick += this.OnMouseDoubleClick;

uniformGrid1.Children.Add(textarray[i]);

Чтобы вышесказанное сработало, вашему классу понадобится такой метод:

void OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    // Do something
}
0 голосов
/ 21 марта 2010

Создайте обработчик события click, а затем используйте его для подписки на события click ваших текстовых полей, например так:

textarray[i].Click += new EventHandler(textbox_Click);

...

void textbox_Click(object sender, EventArgs e)
{
    // do something 
}

Если действия, которые вы хотите выполнить, одинаковы для каждого текстового поля, тогда одиндостаточно обработчика кликов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...