Помогите определить экземпляр класса Button

Тема в разделе ".NET", создана пользователем gomela, 10 июл 2010.

  1. gomela

    gomela Гость

    Привет, народ!!!
    Помогите разобраться.
    Есть такой код в котором мы программно создаем 100 кнопок (10строк по 10шт):
    Код (LotusScript):
    'В объявлениях класса Form
    Dim FC(9, 9) As Button

    'В процедуре Form_Load
    For I = 0 To 9                 
    For J = 0 To 9
    FC(I, J) = New Button  'Создем экземпляр класса
    AddHandler FC(I, J).Click, AddressOf EventGA  'Ссылаемся на обработчик события EventGA
    FC(I, J).Text = ""  'Всякие начальные свойства кнопок
    FC(I, J).Width = 28
    FC(I, J).Height = 28
    FC(I, J).Left = J * 29 + 100
    FC(I, J).Top = I * 29 + 100
    FC(I, J).FlatStyle = FlatStyle.Flat
    Controls.Add(FC(I, J))  'Добавляем в коллекцию новый экземпляр класса
    Next
    Next

    'Обработчик события Click массива кнопок FC(x,y)
    Private Sub EventGA(ByVal sender As System.Object, ByVal e As System.EventArgs)
    'Всякие действия при нажатии кнопки
    End Sub
    ВОПРОС: Как в этой ситуации обработать нажатие именно нужной кнопки.
    PS. Вариант присвоить .Text кнопкам при их инициализации, а потом в обработчике смотреть (sender.ToString) свойство Текст - не применим. Дело в том, что свойство .Text кнопок должно быть пустым, т.е. ""

    ЧТО Я ПЫТАЛСЯ СДЕЛАТЬ:
    1. Как-то закидывать в обработчик события .Name кнопок.... не разобрался ((
    2. Создать свой наследуемый класс типа MyButton, в котором дополнить стандартное событие .Click возможностью передачи .Name в обработчик.... блин, не разобрался чёйта((((

    Заранее всем спасибо )
     
  2. gomela

    gomela Гость

    Вобщем, пока все думают, я решил свой вопрос следующим образом.
    Контролируем свойство .TabIndex и получается такой обработчик:
    Код (LotusScript):
    Public Sub EventGA(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Dim NK As Button = CType(sender, Button)
    Dim IK, KX, KY As Integer
    IK = NK.TabIndex
    IK = IK - 12  'Вычитаем кол-во элем.упр. расположенных на форме
    KY = CInt(System.Math.Floor(IK / 10))
    If IK < 10 Then KY = 0
    KX = IK - KY * 10
    FC(KY, KX).BackColor = Color.Gray   'FC(y,x) - это экземпляр класса Button (кнопка). Меняем цвет фона нажатой кнопки
    End Sub
    Если кто предложит что-то более толковое, буду рад обсудить ))
     
  3. mr_ST

    mr_ST Гость

    Используй проперть Tag вместо TabIndex.
     
  4. gomela

    gomela Гость

    .Tag - считаешь более правильное решение чисто эстетически или есть более весомые аргументы?
     
  5. gomela

    gomela Гость

    :) "выкрутасы" вычисляют нажатую кнопку в двухмерной матрице FC(y,x)
    Просто в проге ситуация такая, что мне нужно знать элемент этого массива, а не просто порядковый номер кнопки
     
Загрузка...

Поделиться этой страницей