powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не получается назначить события на массив элементов (или типа массив, динамически созданн)
14 сообщений из 14, страница 1 из 1
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39484981
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу создать массив из кнопок 8х8 (обычная шахматная доска). Пробую VB.NET после VB6 и никак не могу подружиться с отсутствием массива элементов. Создать кнопки могу, а вот события назначить что-то не получается.


Код: 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 WithEvents Btn11, Btn12, Btn13, Btn14, Btn15, Btn16, Btn17, Btn18 As Button


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For x As Int32 = 1 To 8
            For y As Int32 = 1 To 8
                Dim Btn As New Button
                Btn.Visible = True
                Btn.Size = New Size(70, 60)
                Btn.Location = New Point(5 + (x * 70), 5 + (60 * y))
                Btn.Name = "Btn" & y & x
                AddHandler Btn, AddressOf ButtonArr_Click
                Me.Controls.Add(Btn)
            Next y
        Next x
    End Sub


    Private Sub ButtonArr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn11.Click, Btn12.Click, Btn13.Click, Btn14.Click, Btn15.Click, Btn16.Click, Btn17.Click, Btn18.Click
        'Select Case DirectCast(sender, TextBox).Name
        'Case Btn11.Name : MsgBox("The text in the first TextBox has changed";) 
        'Case Btn12.Name : MsgBox("The text in the second TextBox has changed";) 
        'Case Btn13.Name : MsgBox("The text in the third TextBox has changed";) 
        'End Select
        Stop
    End Sub
End Class
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39484982
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть на VB6 написанная прога с массивом 60*4 кнопок. там одни кнопки для ввода из сенсорного ПК. Буду в шоке если по проще записи кода не найдется.
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39484986
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О... я молодец. У меня успехи)))

Код: 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.
Public Class Form1

    Private WithEvents Btn11, Btn12, Btn13, Btn14, Btn15, Btn16, Btn17, Btn18 As Button

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For x As Int32 = 1 To 8
            For y As Int32 = 1 To 8
                Dim Btn As New Button
                Btn.Visible = True
                Btn.Size = New Size(70, 60)
                Btn.Location = New Point(5 + (x * 70), 5 + (60 * y))
                Btn.Name = "Btn" & y & x
                AddHandler Btn.Click, AddressOf ButtonArr_Click
                Me.Controls.Add(Btn)
            Next y
        Next x
    End Sub

    Private Sub ButtonArr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim s As String = sender.Name
        Dim x As Byte = Mid(s, 4, 1), y As Byte = Mid(s, 5, 1)
        MsgBox(x & y)
    End Sub
End Class



Очень даже ничего так. Понравилось писать упрощенно с Dim. Почти как на JS. Посмотрим как VB.NET себя покажет работая с массивами и объектами.
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39484987
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Private WithEvents лишнее уже..
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39484988
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работает
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For x As Int32 = 1 To 8
            For y As Int32 = 1 To 8
                Dim Btn As New Button
                Btn.Visible = True
                Btn.Size = New Size(70, 60)
                Btn.Location = New Point(5 + (x * 70), 5 + (60 * y))
                Btn.Name = "Btn" & y & x
                AddHandler Btn.Click, AddressOf ButtonArr_Click
                Me.Controls.Add(Btn)
            Next y
        Next x
    End Sub

    Private Sub ButtonArr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim s As String = sender.Name
        Dim x As Byte = Mid(s, 4, 1), y As Byte = Mid(s, 5, 1)
        MsgBox(x & y)
    End Sub
End Class
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39485047
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Андрей159Посмотрим как VB.NET себя покажет работая с массивами и объектами.
Вместо массивов обычно удобнее использовать List
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39485962
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Андрей159Посмотрим как VB.NET себя покажет работая с массивами и объектами.
Вместо массивов обычно удобнее использовать List

я не понял. можно где-нибудь посмотреть пример?
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39486059
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Андрей159Cat2пропущено...

Вместо массивов обычно удобнее использовать List

я не понял. можно где-нибудь посмотреть пример?
https://msdn.microsoft.com/ru-ru/library/6sh2ey19(v=vs.110).aspx

В первом приближении List - это динамический массив
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39486701
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159 Все работает
Код: vbnet
1.
AddHandler Btn.Click, AddressOf ButtonArr_Click



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

Слабая ссылка
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39486779
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCАндрей159 Все работает
Код: vbnet
1.
AddHandler Btn.Click, AddressOf ButtonArr_Click




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

Слабая ссылка
попутал ты, удалять батоны можно без проблем, т.к. батон имеет ссылку на обработчик, а не наоброт, так что сборщик их сожрёт и так.
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39487044
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pation...удалять батоны можно без проблем, т.к. батон имеет ссылку на обработчик, а не наоброт, так что сборщик их сожрёт и так.

точно, согласен.
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39487871
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сборщик мусора ?
У меня от студии VS 2010 после нескольких десяток запусков в процессах остается очень много процессов с именем IntelliTrace.exe Убивать их очень долго нужно. А занимают они 9гиг файла подкачки. Я офигел.

На VB6 написал киллера и вот так их уничтожаю за секунду:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Command1_Click()
    Dim objWMIService, objProcess, colProcess, strList
    Dim strComputer, strProcessKill
    strComputer = "."
    strProcessKill = "'IntelliTrace.exe'"
    
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " & strProcessKill)
    For Each objProcess In colProcess
      strList = objProcess.Terminate()
    Next
End Sub



хотя с VB6 никаких проблем никогда подобных не было. А с VB.NET сразу. Есть еще процесс, который называется так как мой проект с добавлением окончания МойПроект.vshost.exe Так он даже не хочет убираться через диспетчер задач. Я его также киллером расстреливаю за секу. Это все через то что я не убираю хенделы?
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39487891
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Есть еще процесс, который называется так как мой проект с добавлением окончания МойПроект.vshost.exe Так он даже не хочет убираться через диспетчер задач. Я его также киллером расстреливаю за секу. Жестоко...
А если просто галочку снять:
...
Рейтинг: 0 / 0
Не получается назначить события на массив элементов (или типа массив, динамически созданн)
    #39488535
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159Сборщик мусора ?
У меня от студии VS 2010 после нескольких десяток запусков в процессах остается очень много процессов с именем IntelliTrace.exe Убивать их очень долго нужно. А занимают они 9гиг файла подкачки. Я офигел.

На VB6 написал киллера и вот так их уничтожаю за секунду:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Command1_Click()
    Dim objWMIService, objProcess, colProcess, strList
    Dim strComputer, strProcessKill
    strComputer = "."
    strProcessKill = "'IntelliTrace.exe'"
    
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process Where Name = " & strProcessKill)
    For Each objProcess In colProcess
      strList = objProcess.Terminate()
    Next
End Sub




хотя с VB6 никаких проблем никогда подобных не было. А с VB.NET сразу. Есть еще процесс, который называется так как мой проект с добавлением окончания МойПроект.vshost.exe Так он даже не хочет убираться через диспетчер задач. Я его также киллером расстреливаю за секу. Это все через то что я не убираю хенделы?
это всё от безблагодатности...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не получается назначить события на массив элементов (или типа массив, динамически созданн)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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