• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы gomela
  • Дата начала
G

gomela

Привет, народ!!!
Помогите разобраться.
Есть такой код в котором мы программно создаем 100 кнопок (10строк по 10шт):
Код:
'В объявлениях класса 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 в обработчик.... блин, не разобрался чёйта((((

Заранее всем спасибо )
 
G

gomela

Вобщем, пока все думают, я решил свой вопрос следующим образом.
Контролируем свойство .TabIndex и получается такой обработчик:
Код:
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
Если кто предложит что-то более толковое, буду рад обсудить ))
 
M

mr_ST

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

gomela

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

gomela

Зачем вообще все эти выкрутасы с вычислением? что они вычисляют?

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!