Здравствуйте! Сегодня: Чт, 11 Авг 2022, Ваш IP: 18.207.157.152 Войти через loginza
 
Вход | Регистрация | Забыли пароль?
Мой Kbyte.Ru
> Группа «Visual Studio 2010» - Форум
+ Создать новую тему Страница: 1
Тема: 2-мерный массив · +  +  дата добавления: 04.06.2011 / 16:15
Автор темы:
Scryaga
Scryaga
тем: 16 / ответов: 53 / благодарностей: 1 / репутация: 20
Чашка Kbyte.Ru>>
ответов: 53
создал(а) тем: 16


Программно создал на форме массив из 256 кнопок, каждая из них получила свой порядковый номер.На форме, так-же, имеется PictureBox с контекстным меню выбора Image для
кнопок. Друзья мои, не могу найти ответ на вопрос,- "Как в данной ситуации заставить кнопки обрабатывать события Click ?" Все события развиваются в Visual Basic 2010
 Private Sub Form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim Плитка(11, 11) As Button
    Dim x, y As Integer
    Dim число As Integer = 1
    Dim i, j As Integer
    'Dim поперёк As Integer = TextBox_поперёк.Text
    'Dim вдоль As Integer = TextBox_вдоль.Text
    y = 150
    For i = 1 To 11
      x = 150
      For j = 1 To 11
        Плитка(i, j) = New Button
        Плитка(i, j).Width = 45
        Плитка(i, j).Height = 45
        Плитка(i, j).BackColor = Color.White
        Плитка(i, j).Text = число
        число = число + 1
        Me.Controls.Add(Плитка(i, j))
        Плитка(i, j).Location = New Point(x, y)
        Плитка(i, j).FlatStyle = FlatStyle.Flat
        x = x + 45
      Next j
      y = y + 45
    Next i

  End Sub
Технологии: Visual Basic .NET
 
Ответ # 1 # · +  +  дата добавления: 03.09.2012 / 21:26
Автор ответа:
Shark1
Shark1
тем: 3 / ответов: 153 / благодарностей: 5 / репутация: 82
Чашка Kbyte.Ru>>
ответов: 153
создал(а) тем: 3


Хоть тема явно не нова, отвечу.

Полностью рабочий код.

Public Class Form1

    Public btn(11, 11) As Button
    Dim i As Integer = 0
    Dim j As Integer = 0
    Dim x As Integer
    Dim y As Integer
    Dim value As Integer = 1



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.StartPosition = FormStartPosition.CenterScreen
        Me.Width = 536
        Me.Height = 559
        y = 10
        For Me.i = 1 To 11
            x = 10
            For Me.j = 1 To 11
                btn(i, j) = New Button
                ' создает обработчик событий для массива кнопок (для события Click) .
                ' важно, что-бы вставить событие в цикл
                AddHandler btn(i, j).Click, AddressOf btn_Click


                '(AddHandler btn(i, j).MouseEnter, AddressOf btn_MouseEnter)      ' создает обработчик событий для отслежиания перемещений мыши над массивом кнопок .
                ' Ну это так просто для примера


                btn(i, j).Width = 45
                btn(i, j).Height = 45
                btn(i, j).BackColor = Color.White
                btn(i, j).Text = value
                value = value + 1
                Me.Controls.Add(btn(i, j))
                btn(i, j).Location = New Point(x, y)
                btn(i, j).FlatStyle = FlatStyle.Flat
                x = x + 45
            Next j
            y = y + 45
        Next i
    End Sub

    Private Sub btn_Click(ByVal sender As Button, ByVal e As System.EventArgs)
        ' отслеживаем в заголовке окна необходимый нам параметр, в данном случае это надписи на кнопках .
        Me.Text = sender.Text
    End Sub

    'Private Sub btn_MouseEnter(ByVal sender As Button, ByVal e As EventArgs)    ' процедура для отслеживания перемещения мыши над массивом кнопок
    '    Me.Text = sender.Text
    'End Sub


End Class

 
Ответ # 2 # · +  +  дата добавления: 03.09.2012 / 23:09
Автор ответа:
Shark1
Shark1
тем: 3 / ответов: 153 / благодарностей: 5 / репутация: 82
Чашка Kbyte.Ru>>
ответов: 153
создал(а) тем: 3


P.S а если нужно отследить индекс кнопки :

'Me.Text = sender.Text' замените на : 'Me.Controls.GetChildIndex(sender)'
 
Ответ # 3 # · +  +  дата добавления: 29.01.2014 / 19:17
Автор ответа:
Scryaga
Scryaga
тем: 16 / ответов: 53 / благодарностей: 1 / репутация: 20
Чашка Kbyte.Ru>>
ответов: 53
создал(а) тем: 16


Сегодня решил зайти в группу и посмотреть,что нового.
Перед Shark1 мне стало,как-то,неловко-он мне ответил,а я ему
ни ответа,ни привета.
Хочется перед ним извиниться и засыпать благодарностями.
 
Ответ # 4 # · +  +  дата добавления: 29.01.2014 / 19:54
Автор ответа:
Shark1
Shark1
тем: 3 / ответов: 153 / благодарностей: 5 / репутация: 82
Чашка Kbyte.Ru>>
ответов: 153
создал(а) тем: 3


Scryaga

Я группу просматриваю периодически.

Спасибо и удачи.
 
Страница: 1 + Создать новую тему