Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 5

Динамическое создание компонентов и подписка их на события

05.03.2012, 02:29. Показов 2086. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Я начинающий программист, пытаюсь разобраться с созданием массивов control-ов и ихних событий. У меня есть три tableLayoutPanel, я в цыкле поместил в каждую ячейку лейблы и создал для них события MouseEnter и MouseLeave. Программа запускается и работает, но при наведении курсора на label выдаёт ошибку. Вот мой код:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace loto
{
    public partial class Form1 : Form
    {
        int i, value;
        Label[] label = new Label[75];
        Random rand = new Random();
 
        public Form1()
        {
            InitializeComponent();
 
            for (i = 0; i < label.Length; i++)
            {
                value = rand.Next(1, 100);
 
                label[i] = new Label();
                label[i].Name = "label" + (i + 1).ToString();
                label[i].Margin = new Padding(3, 3, 2, 2);
                label[i].TabIndex = i;
                label[i].Dock = DockStyle.Fill;
                label[i].BackColor = SystemColors.Control;
                label[i].Font = new Font("MS Reference Sans Serif", 12, FontStyle.Bold);
                label[i].TextAlign = ContentAlignment.MiddleCenter;
                if (value < 10) label[i].Text = "0" + value.ToString();
                else label[i].Text = value.ToString();
                label[i].MouseEnter += new EventHandler((s, args) => { label[i].BackColor = Color.LightGray; });
                label[i].MouseLeave += new EventHandler((s, args) => { label[i].BackColor = SystemColors.Control; });
            }
 
            for (i = 0; i < 25; i++) tableLayoutPanel1.Controls.Add(label[i]);
            for (i = 25; i < 50; i++) tableLayoutPanel2.Controls.Add(label[i]);
            for (i = 50; i < 75; i++) tableLayoutPanel3.Controls.Add(label[i]);
        }
    }
}
Подскажите, что здесь не так.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2012, 02:29
Ответы с готовыми решениями:

Динамическое создание компонентов и подписка их на события 2
Добрый день! В процессе работы возник ещё один вопрос. Программа у меня запускается, но при нажатии на panel мне выдаёт такую ошибку:...

Динамическое создание компонентов и подписка их на события
Здравствуйте! Меня интересует вопрос: как можно создать что-нибудь по заготовке? Звучит туманно, но попробую объяснить подробнее....

Динамическое создание объектов. Подписка на событие
У меня есть несколько linkbuttons которые создаются динамически, им всем присваиваю 1 общее событие на .Click.. но он не заходит в это...

3
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
05.03.2012, 07:56
Вы используете в обработчике переменную i, которая при срабатывании обработчика уже имеет значение = 75. Поменяйте обработчики на такие
C#
1
2
label[i].MouseEnter += new EventHandler((s, args) => { (s as Label).BackColor = Color.LightGray; });
label[i].MouseLeave += new EventHandler((s, args) => { (s as Label).BackColor = SystemColors.Control; });
Да, и сделайте i и value локальными переменными
1
c#
 Аватар для temich-92
95 / 95 / 27
Регистрация: 25.03.2011
Сообщений: 290
05.03.2012, 09:12
по моему i вообще не нужно
0
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 5
05.03.2012, 15:24  [ТС]
Большое спасибо! Теперь всё работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2012, 15:24
Помогаю со студенческими работами здесь

Создание динамического DataGridView и подписка на события
public DataGridView arrayDG = new DataGridView; Вот есть код для создания несколько таблиц, я знаю как обработать событие если таблица...

Разработка приложений с использованием стандартных и дополнительных компонентов. Динамическое создание компонентов.
Здравствуйте! Помогите мне, пожалуйста. Условие задачи состоит в следующем: из списка выбираю фигуру(например, круг). Далее открывается...

Динамическое создание компонентов
Добрый день. Задался вопросом как добавить из кода контрол в WPF. Например добавить button в stackpanel. В WF это сделать очень...

Динамическое создание Компонентов
Всем Привет ! Пишу змейку на делфи , с помощью массива Shape'ов . Суть такова в меню нажимаешь новая игра ну а дальше все как...

Динамическое создание компонентов
Добрый вечер. Вопрос в следующем: Имеется форма на ней некоторая кнопка , при нажатии на данную кнопку. На форму , выше данной...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru