powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Индексированные контроллы в Vb.Net
46 сообщений из 46, показаны все 2 страниц
Индексированные контроллы в Vb.Net
    #38936731
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В VB6 имеется возможность создания индексированных контролов, например Label1(i), что очень удобно. В Vb.Net я делаю это так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 
    Dim LabelArray1(30) As Label
    Dim LabelArray2(30) As Label
    Dim TextArray(30) As TextBox
    Dim TextArray1(30) As TextBox
    Dim TextArray2(30) As TextBox
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Label2.Text = ""
        TextBox1.Text = ""
        LabelArray(1) = Label3
        LabelArray(2) = Label4
        ..........
       End Sub



Что не очень удобно и красиво. Есть ли другие варианты?
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38936744
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_PskВ VB6 ...... например Label1(i), что очень удобнодостаточно неудобно, но это - единственный способ использовать обработчик событий на заранее неизвестном количестве стандартных контролов, то бишь заплатка, покрывающая отсутствие возможности динамически вешать события.

В .NET этого нет из-за того, что такая возможность есть. Так что надо просто сменить подход к задаче, не ориентируясь на костыль VB6
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38936767
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, не могли бы дать пример или наводку?
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38936823
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Костыль не костыль,
но мне из за этого приходится много переписывать, а некоторые коды тупо размножать (потому что это местами проще и понятнее).
А на некоторые общие ф-ции дописывать куски, определяющие "индекс", которые больше самого собственно кода который по делу.
Вешать по куче хандлов на одну ф-цию, а потом мудохаться с CType(sender, Control) далеко не всегда удобно.
Вот если б было оба варианта, было бы хорошо.
Я так скажу, у каждого способа свои преимущества и свои недостатки.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38936840
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот чего хорошо в .Net так это то что в VB6 нельзя сделать более 256 контролов на форме.
И индексы (в ущерб удобности) хоть немного эту ситуацию разруливали,
хотя меня в одном из проектов последнее время это уже плохо спасало.
В .Net по крайней мере такого ограничения нет, рисуй себе Label1 - Label10000 в удовольствие, при этом только надо не забыть (если нужно событие) 10000 раз через запятую написать Handles1... Handles10000. "Удобство" налицо.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38936849
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Вот чего хорошо в .Net так это то что в VB6 нельзя сделать более 256 контролов на форме.
И индексы (в ущерб удобности) хоть немного эту ситуацию разруливали,
хотя меня в одном из проектов последнее время это уже плохо спасало.
В .Net по крайней мере такого ограничения нет, рисуй себе Label1 - Label10000 в удовольствие, при этом только надо не забыть (если нужно событие) 10000 раз через запятую написать Handles1... Handles10000. "Удобство" налицо.Элементарный LINQ-запрос к Control.Controls Property поможет.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38936854
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77, не очень понимаю, как это делается. Вы не могли бы маленький примерчик?
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38936887
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_Psk,

Делается что? Событие на 10000 кнопок вешается?
Код: vbnet
1.
2.
3.
    Private Sub ButtonAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, ... Button10000.Click
      CType(sender, Button).Visible = False
    End Sub
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937117
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо всем. Меня устроит такой вариант:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  Dim LabelArray(30) As Button
    Dim i As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Me.i = 1 To 2
            AddButtons()
        Next
    End Sub
    Private Sub AddButtons()
        ' Suspend the form layout and add two buttons.
        Me.SuspendLayout()
        Dim button As New Button()
        button.Location = New Point(10 + (i - 1) * 300, 10)
        button.Size = New Size(75, 25)
        button.Text = "OK" & Str(i)
        Me.Controls.AddRange(New Control() {button})
        Me.ResumeLayout()
        LabelArray(i) = button
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        LabelArray(1).Text = "Кнопка1"
        LabelArray(2).Text = "Кнопка2"
    End Sub
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937194
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proно это - единственный способ использовать обработчик событий на заранее неизвестном количестве стандартных контроловВоловиц, ты ацтой :) (с)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Form1:

Dim mButtons As New Collection

Private Sub Form_Load()
Dim cmd As CommandButton, btn As clsButton
    Set cmd = Me.Controls.Add("VB.CommandButton", "cmd1")
    cmd.Visible = True
    Set btn = New clsButton
    Set btn.Button = cmd
    mButtons.Add btn
End Sub

Public Sub ButtonClick(Button As CommandButton)
    MsgBox Button.Name
End Sub

clsButton:

Dim WithEvents mButton As CommandButton

Public Property Set Button(value As CommandButton)
    Set mButton = value
End Property

Private Sub mButton_Click()
    Dim frm As Form1
    Set frm = mButton.Parent
    frm.ButtonClick mButton
End Sub
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937230
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Slava_Psk,

Делается что? Событие на 10000 кнопок вешается?
Код: vbnet
1.
2.
3.
    Private Sub ButtonAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, ... Button10000.Click
      CType(sender, Button).Visible = False
    End Sub

ты тоже :)

Код: vbnet
1.
2.
3.
4.
For x = 1 To 1000
   Dim cmd As Button = Controls.Add(...)
   AddHandler cmd.Click, AddressOf ButtonAll_Click
Next


или вообще так:

Код: vbnet
1.
2.
3.
        AddHandler cmd.Click, Sub(sender As Object, e As EventArgs)
                                  CType(sender, Button).Visible = False
                              End Sub
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937254
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyShocker.Proно это - единственный способ использовать обработчик событий на заранее неизвестном количестве стандартных контроловВоловиц, ты ацтой :) (с)изящно

я делал немного иначе - обертывал в свой юзерконтрол (все равно нужна была дополнительная функциональность)
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937269
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Вот чего хорошо в .Net так это то что в VB6 нельзя сделать более 256 контролов на форме.
И индексы (в ущерб удобности) хоть немного эту ситуацию разруливали,
хотя меня в одном из проектов последнее время это уже плохо спасало.
В .Net по крайней мере такого ограничения нет, рисуй себе Label1 - Label10000 в удовольствие, при этом только надо не забыть (если нужно событие) 10000 раз через запятую написать Handles1... Handles10000. "Удобство" налицо.

Не напоролись еще? - нельзя в винформах сделать 10000 контролов.

Ограничение системы - дает (в зависимости от мощности машины) - 1600 - 2500 хендлов.
Потом эксепшен.

Ну и так делать нельзя. контролы - они для человека, чтобы видел, нажимал.
То есть - надо разделять отображение и данные.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937296
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,

У меня в форме настроек где-то 35 узлов дерева, каждому узлу соответствует вкладка - ну сколько со всеми рамками 10-20-30 вряд ли больше.
В VB6 я балансировал на грани, при этом использовались массивы Label, TextBox и т.п. - причем Text(1) и Text(2) например могли быть абсолютно разного смысла.
В .Net воспроизвел тоже самое, контролов думаю стало еще больше (не отказывал себе в панелях и прочем для простоты конфигурирования расположения и т.п.). Ну, нет, пока не напоролся.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937308
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я в таких случаях оформлял вкладки как юзерконтролы и подгружал их динамически на форму при выборе из дерева
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937318
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77 35 узлов дерева

Не имеет смысла создавать и хранить то, что в данный момент невидимо (может пользователь и не будет это открывать).
Надо делать типа окно просмотра - и создавать контролы в момент обращения.
На винформах это можно делать с помощью рефлексии.

А как раз на WPF это более естественно организуется - хотя и не элементарно (потому, что это и не есть элементарно).
Когда задаются стили и шаблоны элементов коллекции - а сами стили и шаблоны выбираются в зависимости от типа данных.
И в одном списке может быть разная визуализация для разных классов. И тут уже привязки (binding) - наше всё...
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937320
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyпропущено...
Воловиц, ты ацтой :) (с)изящно

я делал немного иначе - обертывал в свой юзерконтрол (все равно нужна была дополнительная функциональность)из изящного тут только
Код: vbnet
1.
2.
Set frm = mButton.Parent
frm.ButtonClick mButton

поскольку я догадался об этом лишь сейчас. но с архитектурной точки зрения это говнокод, поскольку жестко увязывает clsButton и форму.

а обычно для этого используется класс-коллекция, которая имеет собственное событие ButtonClick, на которое подписывается форма, эта коллекция передается в clsButton, и кнопка дергает ее метод. а еще можно вместо событий использовать интерфейсы.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937321
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proя в таких случаях оформлял вкладки как юзерконтролы и подгружал их динамически на форму при выборе из дерева

:-)
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937448
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая разница, юзерконтролы, вкладки, подгружать не подгружать.
Когда делал впервые, не было Treview, на одной плоской форме все в 3-х рамках помещалось.
Потом дерево с 5-ю узлами появилось.
Не глючит, работает, не тормозит, смотрится хорошо, бабло капает. Че еще надо.

Вопрос был про массивы контролов.
Ответ: в .Net так нельзя.
Для 3-х однотипных ListView удобнее индекс нежели 3 разных ника. Мое мнение такое.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937510
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyа обычно для этого используется класс-коллекция, которая имеет собственное событие ButtonClick, на которое подписывается форма, эта коллекция передается в clsButton, и кнопка дергает ее метод. а еще можно вместо событий использовать интерфейсы.само собой, у меня есть коллектор событий, я про идею коллекции классов-оберток
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937513
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Shocker.Proя в таких случаях оформлял вкладки как юзерконтролы и подгружал их динамически на форму при выборе из дерева
:-)а что, собственно, в этом смешного? )


Дмитрий77Какая разница, юзерконтролы, вкладки, подгружать не подгружать.разница как раз в ограничениях на количество контролов
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937613
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Какая разница, юзерконтролы, вкладки, подгружать не подгружать.
Когда делал впервые, не было Treview, на одной плоской форме все в 3-х рамках помещалось.
Потом дерево с 5-ю узлами появилось.
Не глючит, работает, не тормозит, смотрится хорошо, бабло капает. Че еще надо.

Вопрос был про массивы контролов.
Ответ: в .Net так нельзя.
Для 3-х однотипных ListView удобнее индекс нежели 3 разных ника. Мое мнение такое.
Есть разница.
Я чинил проэкт, который рожал вкладку в таб контроле для каждой строки в базе и заполнял там все текстбоксы (штук 15-20) данными. Пока строк в базе (при тестировании) было 10-20 - все работало.
Когда дали на продакшен - а там "аж" 400 строк - обвалилось.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937615
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proа что, собственно, в этом смешного?

а, я неправильно выразился - думал поставить +1.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937617
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Для 3-х однотипных ListView удобнее индекс нежели 3 разных ника. Мое мнение такое.
Для подобных извращений есть атрибуты.
Пометьте атрибутом с конструктором, в котором давайте контролам индекс. Раз уж вам так надо....
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937630
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,
Что интересно, мне как раз ничего не надо и все более менее устраивает. И не я топик создавал.😏
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937645
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77И не я топик создавалНет уж позвольте!!
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937740
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
но ведь правда не я.
Было что сказать, я написал.
А дискутировать и что-то кому то доказывать
На эту тему ну правда, не интересно.
Отвечаю только от нечего делать, еду в метро
а тут wi-fi халявный. Круто. Да и телефон новый освоить
же надо.
О, смайлики надо попробовать.
😃😊😞😉 📞 📞 📞 📞 📱 📞 📱🚉🚉🚉 🚽🚹🚺🚻 круто
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937812
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Дмитрий77Вопрос был про массивы контролов.
Ответ: в .Net так нельзя.
Как это, как это?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            string[] dir = System.IO.Directory.GetDirectories(@"c:\");
            Label[] label = new Label[dir.Length];
            for (int i = 0; i < label.Length; i++ )
            {
                label[i] = new Label();
                label[i].Text = dir[i];
                label[i].Click += label_Click;
                label[i].Top = i * label[i].Height;
                
            }
            this.Controls.AddRange(label);
         }

       

        private void label_Click(object sender, EventArgs e)
        {
            MessageBox.Show(((Label)sender).Text);
        }
    }
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937818
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ах да. Eсли контролы уже готовы


Код: vbnet
1.
2.
LabelArray(1) = Label3
LabelArray(2) = Label4



Код: c#
1.
Label[] label = new Label() {label1, label2, label3} ;
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38937931
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2, речь шла про VB6 и VB.Net
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38938677
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Slava_PskCat2, речь шла про VB6 и VB.Net
Так что , на странице https://msdn.microsoft.com/ru-ru/library/wak0wfyt.aspx врут с примером?

Код: c#
1.
Dim prices(3, 4, 5) As Long



Я так глянул, что List тоже в VB/NEt присутствует. Его использовать даже предпочтительнее.

Не нашел никаких запрещений загонять контролы в массив или коллекцию
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38938806
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2, так я и привел пример этого 17518231
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954525
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,
Вставляю ваш код, жалуется тип CmmandButton не определен?
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954528
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_PskВставляю ваш код, жалуется тип CmmandButton не определен?походу, куда-то не туда вставил
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954568
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, видимо это для VB6?
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954582
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_PskShocker.Pro, видимо это для VB6?да
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954591
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2, Не получается сделать тоже в VB.Net относительно обработки события Click для массиива контролов . Не поможете, пожалуйста?
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954597
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2Дмитрий77Вопрос был про массивы контролов.
Ответ: в .Net так нельзя.
Как это, как это?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            string[] dir = System.IO.Directory.GetDirectories(@"c:\");
            Label[] label = new Label[dir.Length];
            for (int i = 0; i < label.Length; i++ )
            {
                label[i] = new Label();
                label[i].Text = dir[i];
                label[i].Click += label_Click;
                label[i].Top = i * label[i].Height;
                
            }
            this.Controls.AddRange(label);
         }

       

        private void label_Click(object sender, EventArgs e)
        {
            MessageBox.Show(((Label)sender).Text);
        }
    }




Интересует коллекция, массив PictureBox и отработка на них Click в VB.net
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954611
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava_PskИнтересует коллекция, массив PictureBox и отработка на них Click в VB.netа в чем будет принципиальная разница с приведенным примером?
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954616
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, Данный пример на С. .Click в Vb.Net для элемента массива контролов не проходит.
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38954723
Slava_Psk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока ждал помощи сам нашел рабочий вариант.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Public Class Form1

    Dim PicArray(30) As PictureBox
    Dim i As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Me.i = 1 To 2
            AddPic()
        Next
    End Sub
    Private Sub AddPic()
        ' Suspend the form layout and add two buttons.
        Me.SuspendLayout()
        Dim picture As New PictureBox()
        picture.Location = New Point(10 + (i - 1) * 300, 10)
        picture.Size = New Size(75, 25)
        picture.BackColor = Color.Black
        'button.Text = "OK" & Str(i)
        AddHandler picture.Click, AddressOf PicAll_Click
        Me.Controls.AddRange(New Control() {picture})
        Me.ResumeLayout()
        PicArray(i) = picture
    End Sub

    Private Sub PicAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Click
        If PicArray(1).Capture = True Then
            MsgBox(1)
        End If
    End Sub
End Class
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38955746
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот видите, стоит немного подумать и никакая помощь не нужна.
Хотя не вижу чем Ваше решение принципиально отличается от моего примера, кроме того, что у меня более быстрое добавление контролов на форму за счет AddRange/

Slava_Psk
Код: vbnet
1.
Me.Controls.AddRange(New Control() {picture})


А это-то зачем? Смысл добавлять массив из одного элемента?

Наверняка достаточно

Код: vbnet
1.
 Me.Controls.Add(picture)
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #38955973
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и нафига нужен PicArray? в vb6 он нужен был лишь для обработки одним хендлером событий нескольких контролов без лишних телодвижений, а в дотнете появилась возможность назначать хендлер кодом, которой не было в шестерке.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Индексированные контроллы в Vb.Net
    #39296933
Cramper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, прошу помощи знатоков. Программно создаю коллекцию PictureBox и прописываю связанные с ее элементами события.
Событие Click нормально отрабатывает, т.е. при клике можно идентифицировать элемент коллекции. Событие MouseHover отрабатывает при наведении указателя мышки на PictureBox, но никак не удается идентифицировать номер элемента коллекции. Помогите пожалуйста разобраться. В планах есть прописать и другие события для элементов коллекции. Вот код:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Public Class Form1
    Dim PicArray(30) As PictureBox
    Dim i As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Me.i = 1 To 2
            AddPic()
        Next
    End Sub
    Private Sub AddPic()
        ' Suspend the form layout and add two buttons.
        Me.SuspendLayout()
        Dim picture As New PictureBox()
        picture.Location = New Point(10 + (i - 1) * 300, 10)
        picture.Size = New Size(75, 25)
        picture.BackColor = Color.Red
        'button.Text = "OK" & Str(i)
        AddHandler picture.MouseHover, AddressOf PicAll_MouseHover
        AddHandler picture.Click, AddressOf PicAll_Click
        Me.Controls.AddRange(New Control() {picture})
        Me.ResumeLayout()
        PicArray(i) = picture
        'PicArray(1).Capture = True
    End Sub

    Private Sub PicAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.MouseHover
        If PicArray(1).Capture = True Then
            MsgBox(1)
        End If
        If PicArray(2).Capture = True Then
            MsgBox(2)
        End If
    End Sub

    Private Sub PicAll_MouseHover(ByVal sender As Object, ByVal e As EventArgs)
        TextBox1.Text = 777
        If PicArray(1).Capture = True Then
            MsgBox(1)
        End If
    End Sub



End Class
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #39296968
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cramper,

в PicArray(30) и ищите sender, который первым параметром в обработчике события
...
Рейтинг: 0 / 0
Индексированные контроллы в Vb.Net
    #39296981
Cramper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,
По моему я это и пытаюсь делать PicArray(1).Capture? Навожу мышку на этот элемент, как его при этом идентифицировать?
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Индексированные контроллы в Vb.Net
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]