Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Массив Контролов в VB.Net

1.9K
04 апреля 2004 года
MishaSoft
48 / / 16.09.2003
В VB6 (в отличие от VB.Net) можно было создать массив контролов и (по потребности) обрабатывать события связанные с группой контролов одной процедурой по свойству index. Как это можно реализовать в VB.Net?
1.9K
05 апреля 2004 года
MishaSoft
48 / / 16.09.2003
Ну просто очень нужно!!! Неужели никто по Vb.Net не специализируется?
266
05 апреля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by MishaSoft
Ну просто очень нужно!!! Неужели никто по Vb.Net не специализируется?


А какую процедуру там инициализирует клик по кнопке, например?

1.9K
05 апреля 2004 года
MishaSoft
48 / / 16.09.2003
Цитата:
Originally posted by mhaturov

А какую процедуру там инициализирует клик по кнопке, например?



Там так же как и в VB6 создается обработчик событий типа cmdButton_Click, но вот индекс только она как параметр не дает. Здеся вообще нету такого понятия как индекс, даже если копи\пастом создавать контролы, то он все равно им дает разные Имена (TextBox1, TextBox2...). В принципе можно создавать это динамически, но проблема с обработчиком событий...ему массивы не нравятся.

266
06 апреля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by MishaSoft


Там так же как и в VB6 создается обработчик событий типа cmdButton_Click, но вот индекс только она как параметр не дает. Здеся вообще нету такого понятия как индекс, даже если копи\пастом создавать контролы, то он все равно им дает разные Имена (TextBox1, TextBox2...). В принципе можно создавать это динамически, но проблема с обработчиком событий...ему массивы не нравятся.


Я скинул мессагу человеку, который с .Net работал - думаю, скоро он тебе ответит.

1.9K
06 апреля 2004 года
MishaSoft
48 / / 16.09.2003
Цитата:
Originally posted by mhaturov

Я скинул мессагу человеку, который с .Net работал - думаю, скоро он тебе ответит.



Спасибо :) Будем ждать

319
06 апреля 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by MishaSoft


Спасибо :) Будем ждать


вобщем так, все достаточно просто, если ты программил в VC када-нить, логика абсолютно такая же.
объявляем массив наших кнопок:
Friend but(4) As System.Windows.Forms.Button

потом где-нить в коде создаем кнопки:

Код:
but(0) = New System.Windows.Forms.Button 'создать объект в памяти
        Me.but(0).Location = New System.Drawing.Point(100, 32) 'установить его положение
        Me.but(0).Name = "But0" 'дать имя
        Me.but(0).Size = New System.Drawing.Size(64, 32) 'установить размеры
        Me.but(0).TabIndex = 1 ' табуляцию
        Me.but(0).Text = "But1" ' надпись на кнопке
        Me.Controls.Add(Me.but(0)) ' добавить кнопку к существующим контролам
        AddHandler but(0).Click, AddressOf but_Click ' задать обработчик нажатия
        AddHandler but(0).MouseHover, AddressOf but_Hoover 'задать обработчик при наведении курсора на кнопку
        AddHandler but(0).MouseLeave, AddressOf but_Leave ' задать обработчик при покидании курсором кнопки

'Обрабатываем нажатие кнопки
Private Sub but_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Label1.Text = "hello"
End Sub
'обрабатываем наведение курсора
Private Sub but_Hoover(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim thisbutton As Button = DirectCast(sender, Button)
        thisbutton.BackColor = Drawing.Color.AliceBlue
End Sub
'обрабатываем увод курсора
Private Sub but_Leave(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim thisbutton As Button = DirectCast(sender, Button)
        thisbutton.BackColor = Drawing.Color.AntiqueWhite
    End Sub


вот и все, лично все сделал и протестил в VSVS 2003.NET
работает все просто отлично!
1.9K
10 апреля 2004 года
MishaSoft
48 / / 16.09.2003
Цитата:
Originally posted by xelos
вот и все, лично все сделал и протестил в VSVS 2003.NET
работает все просто отлично!




И в правду работает, но я думаю ты меня не понял :). Идея была в том, чтобы одной процедурой обрабатывать события связанные с любым элементом массива, т.е. чтобы при нажатии на любую кнопку из массива кнопок, вызывалась бы одна и та же процедура обработки, а индекс в массиве кнопки, сгенерировавшей событие, получать как параметр (типа как в ВБ6) ну или указатель на эту кнопку...или любой другой способ определить ее. Главное чтобы не надо было на каждую кнопку писать отдельный обработчик! Конечно можно в цикле определить одну функцию для каждого элемента в массиве, но как тогда определить какой именно элемент сгенерировал его?

2.1K
15 апреля 2004 года
caca
25 / / 01.08.2003
Ja konechno ne spezialist, no mogu posovetovat tebe shitrit,kak eto delal ja. Prisvaivaesh kazhdomu kontrolu svojstvo Tag (Naprimer But(0).tag=0, But(1).tag=1, But(2).tag=2 i.t.d.), a potom v prozedure obrabotki pishesh: index = CInt(me.ActiveControl.Tag) - vot tebe i indeks.
U menja vrode eto rabotaet.
1.9K
15 апреля 2004 года
MishaSoft
48 / / 16.09.2003
Цитата:
Originally posted by caca
Ja konechno ne spezialist, no mogu posovetovat tebe shitrit,kak eto delal ja. Prisvaivaesh kazhdomu kontrolu svojstvo Tag (Naprimer But(0).tag=0, But(1).tag=1, But(2).tag=2 i.t.d.), a potom v prozedure obrabotki pishesh: index = CInt(me.ActiveControl.Tag) - vot tebe i indeks.
U menja vrode eto rabotaet.



Spasibo, Poprobuyu... :)

319
15 апреля 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by MishaSoft



И в правду работает, но я думаю ты меня не понял :). Идея была в том, чтобы одной процедурой обрабатывать события связанные с любым элементом массива, т.е. чтобы при нажатии на любую кнопку из массива кнопок, вызывалась бы одна и та же процедура обработки, а индекс в массиве кнопки, сгенерировавшей событие, получать как параметр (типа как в ВБ6) ну или указатель на эту кнопку...или любой другой способ определить ее. Главное чтобы не надо было на каждую кнопку писать отдельный обработчик! Конечно можно в цикле определить одну функцию для каждого элемента в массиве, но как тогда определить какой именно элемент сгенерировал его?


упс, сорри, не видел раньше твоего ответа...
саса дело говорит, у тебя же передается sender как объект в функцию. по свойствам сендера и определяй какая кнопка нажата. для всех кнопок устанавливаешь один и тот же обработчик, а потом в самом обработчике по свойствам смотришь от какой именно кнопки идет сообщение.

1.9K
15 апреля 2004 года
MishaSoft
48 / / 16.09.2003
И Как это я раньше не догадался 8) Спасибо всем!
55K
19 ноября 2009 года
Nefteddollar
1 / / 19.11.2009
Спасибо. оч полезно получилось.
С массивом кнопок. = )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог