Работа с массивом кнопок

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

DreamShark
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 20.02.2010 (Сб) 15:43

Работа с массивом кнопок

Сообщение DreamShark » 20.02.2010 (Сб) 15:56

Делаю крестики-нолики.
Решено, что каждую клетку поля 3х3 будет представлять кнопка.
Естественно для более эффективной работы решил сделать массив кнопок, примерно так:

Код: Выделить всё
Public Class Form1
    Dim i, j As Byte
    Dim a(3, 3) As Object

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i = 1 To 3
            For j = 1 To 3
                a(i, j) = New Button()
                a(i, j).left = 40 + (j - 1) * 64
                a(i, j).top = 40 + (i - 1) * 64
                a(i, j).width = 64
                a(i, j).height = 64
                Me.Controls.Add(a(i, j))
            Next
        Next
    End Sub

End Class


Но теперь ещё и надо отследивать события(.click) на каждой кнопке, а как это сделать с массивом кнопок я не понимаю...
Подскажите решение этой проблемы. Спасибо!

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Работа с массивом кнопок

Сообщение FireFenix » 20.02.2010 (Сб) 16:34

Код: Выделить всё
Public Class Form1
    Dim i, j As Byte
    Dim a(3, 3) As Button

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i = 1 To 3
            For j = 1 To 3
                a(i, j) = New Button()
                a(i, j).name = "btn_" & i & "_" & j
                a(i, j).left = 40 + (j - 1) * 64
                a(i, j).top = 40 + (i - 1) * 64
                a(i, j).width = 64
                a(i, j).height = 64

                Me.Controls.Add(a(i, j))

                AddHandler a(i, j).Click, AddressOf btn_Click
            Next
        Next
    End Sub

    Public Sub btn_Click (ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim Button as Button = DirectCast(sender, Button)

        MsgBox("Я Кнопко! И меня зовут - " & Button.Name)
    End Sub
End Class
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

DreamShark
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 20.02.2010 (Сб) 15:43

Re: Работа с массивом кнопок

Сообщение DreamShark » 20.02.2010 (Сб) 17:28

Огромное спасибо, FireFenix

DreamShark
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 20.02.2010 (Сб) 15:43

Re: Работа с массивом кнопок

Сообщение DreamShark » 27.02.2010 (Сб) 13:27

А подскажите как программно менять кнопке шрифт(размер шрифта, начертание, цвет)???
Сколько не пытался - пишет, что "свойство только для читения"...

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Работа с массивом кнопок

Сообщение MIT » 27.02.2010 (Сб) 14:27

Не думаю что пишет он именно про "читение" — переводчики студии все-таки имели некоторое представление о правилах русского языка.

Что бы переопределить часть свойства Font придется пересоздать весь объект:
Код: Выделить всё
SomeButton.Font = New Font(SomeButton.Font, FontStyle.Bold)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

DreamShark
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 20.02.2010 (Сб) 15:43

Re: Работа с массивом кнопок

Сообщение DreamShark » 27.02.2010 (Сб) 14:40

Не думаю что пишет он именно про "читение" — переводчики студии все-таки имели некоторое представление о правилах русского языка.

У меня англ. версия, так что это мой авторский перевод.

А как изменить размер и имя шрифта я так и не разобрался...

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Re: Работа с массивом кнопок

Сообщение Dmitriy2003 » 27.02.2010 (Сб) 14:53

DreamShark писал(а):А как изменить размер и имя шрифта я так и не разобрался...

Не почтите за личное оскорбление, но теперь мне становиться ясно зачем правительство германии ввело так называемый - ИДИОТЕНТЕСТ

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Работа с массивом кнопок

Сообщение FireFenix » 27.02.2010 (Сб) 14:59

http://msdn.microsoft.com/en-us/library ... .font.aspx

перезагрузка
Код: Выделить всё
Font(FontFamily, Single)   Initializes a new Font using a specified size.

Parameters
family
Type: System.Drawing.FontFamily
The FontFamily of the new Font.
emSize
Type: System.Single
The em-size, in points, of the new font.

Ниочём не говорит?
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

DreamShark
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 20.02.2010 (Сб) 15:43

Re: Работа с массивом кнопок

Сообщение DreamShark » 27.02.2010 (Сб) 15:12

Разобрался, всем спасибо!

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Re: Работа с массивом кнопок

Сообщение 1Steps » 28.02.2010 (Вс) 7:11

Не почтите за личное оскорбление, но теперь мне становиться ясно зачем правительство германии ввело так называемый - ИДИОТЕНТЕСТ
:D
Удалена за ненадобностью.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49

    TopList