Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229

Программное добавление CheckBox'а

27.10.2011, 11:41. Показов 2670. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Потихоньку изучаю NET.
Столкнулся с непоняткой: Добавляю программно чекбоксы в цикле(нашел пример):
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        Dim Ctrl As CheckBox
        Dim i As Integer
        Dim point As System.Drawing.Point
        Dim schet As Integer
        Dim RE
        For i = 0 To UBound(M)
              schet += 16
              Ctrl = New CheckBox
              Ctrl.Visible = True
              Ctrl.Name = "TB" + i.ToString
              Ctrl.Text = "Выбрать все".ToString
              Ctrl.Width = 15
              Ctrl.Height = 15
              point.X = 5
              point.Y = schet
              Ctrl.Location = point
              Me.Controls.Add(Ctrl)
              RE = Me.Controls("TB0").Text.ToString 'проверяю. Ну есть же!
Вопросы в количестве 2 штук:
1. Почему не отображается текст чекбокса?
2. как назначить процедуру клику, например, по комбобоксу?

Сорри. Чекбокса в заголовке. Очепятка
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2011, 11:41
Ответы с готовыми решениями:

Программное добавление картинок в ImageList
Всем привет! Подскажите пожалуйста, как реализовать добавление картинок с компьютера (указанной папки) в элемент ImageList программным...

Программное добавление Dll (Add-ins) в Excel
Добрый день, Каким образом можно добавить Dll в excel через vb.net.

Программное добавление в dataGridView
Я новичок в программирование не судите строго, суть в чем есть 2 формы, на назовем т1 таблица на второй(т2) элементы выполняющие некие...

9
 Аватар для gitarillo
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
27.10.2011, 11:56
Лучший ответ Сообщение было отмечено как решение

Решение

Alex77755, Для того чтобы объект мог пораждать события, нужно по особому объявить его. Короче вот пример
VB.NET
1
2
3
4
5
6
7
8
9
Private WithEvents ctr As CheckBox
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ctr = New CheckBox With {.Text = "Новая галка", .Visible = True, .Location = New Point(10, 10)}
        Me.Controls.Add(ctr)
        AddHandler ctr.Click, AddressOf ctr_click
    End Sub
    Private Sub ctr_click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ctr.Click
        MsgBox(sender.text)
    End Sub
3
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
27.10.2011, 12:01  [ТС]
Спасибо!
Буду ковырять дальше. Как я понял именно эта строка назначает процедуру.
Visual Basic
1
 AddHandler ctr.Click, AddressOf ctr_click
0
 Аватар для gitarillo
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
27.10.2011, 12:23
Цитата Сообщение от Alex77755 Посмотреть сообщение
Как я понял именно эта строка назначает процедуру.
Да, она.
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
27.10.2011, 12:26  [ТС]
Спасибо. Всё получилось.
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
27.10.2011, 16:18
Малец поправлю gitarillo - в его примере используются сразу два способа назначить объекту процедуру обратного вызова, то есть обработчик события
Первый способ - объявление переменной с модификатором WithEvents - в этом случае выражение AddHandler можно не использовать. Например,
VB.NET
1
2
3
4
5
6
7
8
9
10
WithEvents chekbox1 As CheckBox
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        chekbox1 = New CheckBox()
        chekbox1.Location = New Point(10, 10)
        chekbox1.Text = "Поставьте галочку"
        Me.Controls.Add(chekbox1)
    End Sub
    Private Sub checkbox1_Checked(ByVal sender As Object, ByVal e As EventArgs) Handles chekbox1.CheckedChanged
        MessageBox.Show("Состояние чекбокса изменилось")
    End Sub
Тогда мы в процедуре указываем слово Handles и после него имя события, к которому привязана эта процедура

Второй способ - это использование AddHandler.
Здесь мы объявляем переменную просто с Dim, без WithEvent
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'Второй способ
    Dim chekbox2 As CheckBox
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        chekbox2 = New CheckBox()
        chekbox2.Location = New Point(10, 35)
        chekbox2.Text = "Поставьте галочку2"
        Me.Controls.Add(chekbox2)
        AddHandler chekbox2.CheckedChanged, AddressOf checkbox1_Checked
        AddHandler chekbox2.CheckedChanged, AddressOf checkbox2_Checked
    End Sub
    Private Sub checkbox1_Checked(ByVal sender As Object, ByVal e As EventArgs) Handles chekbox1.CheckedChanged
        MessageBox.Show("Состояние чекбокса изменилось")
    End Sub
    Private Sub checkbox2_Checked(ByVal sender As Object, ByVal e As EventArgs)
        MessageBox.Show("Привет от второго чекбокса")
        RemoveHandler chekbox2.CheckedChanged, AddressOf checkbox1_Checked
    End Sub
Здесь после AddHandler идет имя события, которое в предыдущем способе шло после Handles,
А после AddressOf - нужная процедура и в этом случае использовать Handles не обязательно
2
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
28.10.2011, 16:15
Цитата Сообщение от Alex77755 Посмотреть сообщение
Почему не отображается текст чекбокса?
Цитата Сообщение от Alex77755 Посмотреть сообщение
Ctrl.Width = 15
Ctrl.Height = 15
не слишком ли малое значение ширины контрола? Там же только сам квадрат с флажком и влезет...
1
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
28.10.2011, 18:19  [ТС]
А ведь точно!
0
 Аватар для gitarillo
755 / 554 / 48
Регистрация: 17.06.2010
Сообщений: 1,041
Записей в блоге: 1
28.10.2011, 21:25
Alex77755, у контролла по-моему по умолчанию автосайз стоит в тру, поэтому и не требуется размеры задавать.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.10.2011, 21:59
Цитата Сообщение от gitarillo Посмотреть сообщение
по умолчанию автосайз стоит в тру
У чекбоксов - нет, приходится прописывать самому
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2011, 21:59
Помогаю со студенческими работами здесь

Программное добавление формы
Здравствуйте, нужно программно добавить форму при нажатии на кнопку. Как это осуществить? Гугл не помогает, либо я запросы неверные ввожу

Программное добавление элементов
Уважаемы подскажите такую ситуацию, не могу немного понять...Как на Relative разметке программно добавлять элементы, чтобы их можно было...

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

Программное добавление View
Всем привет! У меня в роли setContentView выступает класс Draw2D, в котором я собираюсь рисовать кое-какую графику. Графика рисуется...

Программное добавление листа
Всем доброго времени суток. Возник такой вопрос: имеется лист, далее в ячейку вводим какое-нибудь название, затем после нажатия enter у нас...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru