Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
panfilov
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 5
1

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

06.03.2012, 09:04. Просмотров 678. Ответов 5
Метки нет (Все метки)

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

Ошибка возникает в этом участке кода:

C#
1
panel[i].Click += new EventHandler((s, args) => { (s as Panel).BackColor = Color.Black; for (int j = 0; j < panel.Length; j++) { if ((panel[j].Left == ((s as Panel).Left - 5) && panel[j].Top == ((s as Panel).Top - 30) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left - 35) && panel[j].Top == (s as Panel).Top && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left - 5) && panel[j].Top == ((s as Panel).Top + 5) && panel[j].BackColor == Color.Black)) panel[i - 1].BackColor = Color.Black; if ((panel[j].Left == ((s as Panel).Left + 30) && panel[j].Top == ((s as Panel).Top - 30) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left + 35) && panel[j].Top == (s as Panel).Top && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left + 30) && panel[j].Top == ((s as Panel).Top + 5) && panel[j].BackColor == Color.Black)) panel[i + 1].BackColor = Color.Black; } });
Вот весь код целиком:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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 sticks
{
    public partial class Form1 : Form
    {
        Panel[] panel = new Panel[341];
 
        public Form1()
        {
            InitializeComponent();
 
            int i = 0, hpos = 0, vpos = 0, width = 0, height = 0;
            
            for (int row = 0; row < 21; row++)
            {
                hpos = 0;
 
                if ((row & 1) == 0)
                {
                    height = 5;
                    vpos += 30;
 
                    for (int col = 0; col < 21; col++)
                    {
                        if ((col & 1) == 0) { width = 5; hpos += 30; }
                        else { width = 30; hpos += 5; }
 
                        panel[i] = new Panel();
                        panel[i].Name = "panel" + i.ToString();
                        panel[i].TabIndex = 0;
                        panel[i].Size = new Size(width, height);
                        panel[i].Location = new Point(hpos, vpos);
                        panel[i].BackColor = SystemColors.ControlLight;
 
                        if ((col & 1) != 0)
                        {
                            panel[i].MouseEnter += new EventHandler((s, args) => { if ((s as Panel).BackColor != Color.Black) (s as Panel).BackColor = SystemColors.ActiveBorder; });
                            panel[i].MouseLeave += new EventHandler((s, args) => { if ((s as Panel).BackColor != Color.Black) (s as Panel).BackColor = SystemColors.ControlLight; });
                            panel[i].Click += new EventHandler((s, args) => { (s as Panel).BackColor = Color.Black; for (int j = 0; j < panel.Length; j++) { if ((panel[j].Left == ((s as Panel).Left - 5) && panel[j].Top == ((s as Panel).Top - 30) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left - 35) && panel[j].Top == (s as Panel).Top && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left - 5) && panel[j].Top == ((s as Panel).Top + 5) && panel[j].BackColor == Color.Black)) panel[i - 1].BackColor = Color.Black; if ((panel[j].Left == ((s as Panel).Left + 30) && panel[j].Top == ((s as Panel).Top - 30) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left + 35) && panel[j].Top == (s as Panel).Top && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left + 30) && panel[j].Top == ((s as Panel).Top + 5) && panel[j].BackColor == Color.Black)) panel[i + 1].BackColor = Color.Black; } });
                        }
 
                        Controls.Add(panel[i]); if (i < panel.Length - 1) i++; else break;
                    }
                }
                else
                {
                    height = 30;
                    vpos += 5;
 
                    for (int col = 0; col < 11; col++)
                    {
                        width = 5;
                        hpos += 35;
 
                        panel[i] = new Panel();
                        panel[i].Name = "panel" + i.ToString();
                        panel[i].TabIndex = 0;
                        panel[i].Size = new Size(width, height);
                        panel[i].Location = new Point(hpos - 5, vpos);
                        panel[i].BackColor = SystemColors.ControlLight;
                        panel[i].MouseEnter += new EventHandler((s, args) => { if ((s as Panel).BackColor != Color.Black) (s as Panel).BackColor = SystemColors.ActiveBorder; });
                        panel[i].MouseLeave += new EventHandler((s, args) => { if ((s as Panel).BackColor != Color.Black) (s as Panel).BackColor = SystemColors.ControlLight; });
                        panel[i].Click += new EventHandler((s, args) => { (s as Panel).BackColor = Color.Black; for (int j = 0; j < panel.Length; j++) { if ((panel[j].Left == (s as Panel).Left && panel[j].Top == ((s as Panel).Top - 35) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left - 30) && panel[j].Top == ((s as Panel).Top - 5) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left + 35) && panel[j].Top == ((s as Panel).Top - 5) && panel[j].BackColor == Color.Black)) panel[i - 1].BackColor = Color.Black; if ((panel[j].Left == ((s as Panel).Left - 30) && panel[j].Top == ((s as Panel).Top + 30) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left + 35) && panel[j].Top == ((s as Panel).Top + 30) && panel[j].BackColor == Color.Black) || (panel[j].Left == (s as Panel).Left && panel[j].Top == ((s as Panel).Top + 35) && panel[j].BackColor == Color.Black)) panel[i + 1].BackColor = Color.Black; } });
                        Controls.Add(panel[i]);
                    }
                }
            }
        }
    }
}
Подскажите, пожалуйста, в чём ошибка.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 09:04
Ответы с готовыми решениями:

Динамическое создание компонентов и подписка их на события
Добрый день! Я начинающий программист, пытаюсь разобраться с созданием массивов control-ов и ихних...

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

Тестирование закрытых классов, подписка на события
Что нужно делать чтобы подписаться на событие закрытого класса внутри тестового проекта? Внутри...

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

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

5
turbanoff
Эксперт Java
4034 / 3769 / 743
Регистрация: 18.05.2010
Сообщений: 9,330
Записей в блоге: 11
Завершенные тесты: 1
06.03.2012, 09:15 2
Опять вы используете i в лямбдах-обработчиках. Та же самая ошибка.


И не пишите никогда такие огромные куски кода в одну строчку. Делайте переносы, а еще лучше выделяйте отдельные методы.
0
panfilov
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 5
07.03.2012, 01:45  [ТС] 3
Извиняюсь, сделал переносы:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
panel[i].Click += new EventHandler((s, args) =>
{
    (s as Panel).BackColor = Color.Black;
 
    for (int j = 0; j < panel.Length; j++)
    {
        if ((panel[j].Left == ((s as Panel).Left - 5) && panel[j].Top == ((s as Panel).Top - 30) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left - 35) && panel[j].Top == (s as Panel).Top && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left - 5) && panel[j].Top == ((s as Panel).Top + 5) && panel[j].BackColor == Color.Black))
        {
            panel[i - 1].BackColor = Color.Black;
        }
 
        if ((panel[j].Left == ((s as Panel).Left + 30) && panel[j].Top == ((s as Panel).Top - 30) && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left + 35) && panel[j].Top == (s as Panel).Top && panel[j].BackColor == Color.Black) || (panel[j].Left == ((s as Panel).Left + 30) && panel[j].Top == ((s as Panel).Top + 5) && panel[j].BackColor == Color.Black))
        {
            panel[i + 1].BackColor = Color.Black;
        }
    }
});
Но насколько знаю, условия в if-ах переносить нельзя..

Мне нужно чтобы в зависимости от условия, предыдущая или следующая по счёту panel, меняла свой цвет:

C#
1
2
3
4
5
6
7
8
9
10
11
panel[i].Click += new EventHandler((s, args) =>
{
    (s as Panel).BackColor = Color.Black;
 
    for (int j = 0; j < panel.Length; j++)
    {
        if (...) panel[i - 1].BackColor = Color.Black;
 
        if (...) panel[i + 1].BackColor = Color.Black;
    }
});
Не могу врубится, как это сделать, чтобы ошибка не вылетала..
Здесь мы берём текущий panel таким способом: (s as Panel). А как тогда взять предыдущий или следующий что бы вместо i поставить?

Добавлено через 16 минут
А, нет, ошибка выскакивает именно в if-е:

C#
1
2
3
4
5
6
7
8
9
if ((panel[j].Left == (s as Panel).Left &&
panel[j].Top == ((s as Panel).Top - 35) &&
panel[j].BackColor == Color.Black) ||
(panel[j].Left == ((s as Panel).Left - 30) &&
panel[j].Top == ((s as Panel).Top - 5) &&
panel[j].BackColor == Color.Black) ||
(panel[j].Left == ((s as Panel).Left + 35) &&
panel[j].Top == ((s as Panel).Top - 5) &&
panel[j].BackColor == Color.Black))
Добавлено через 9 часов 11 минут
panel[j] - В экземпляре объекта не задана ссылка на объект. Как это исправить?
0
GOID
83 / 83 / 14
Регистрация: 15.02.2011
Сообщений: 252
07.03.2012, 08:08 4
Но насколько знаю, условия в if-ах переносить нельзя..
Можно.

C#
1
2
3
4
5
6
7
8
9
10
11
12
if ((panel[j].Left == ((s as Panel).Left - 5) &&
         panel[j].Top == ((s as Panel).Top - 30) && 
         panel[j].BackColor == Color.Black) || 
         (panel[j].Left == ((s as Panel).Left - 35) &&
         panel[j].Top == (s as Panel).Top &&
         panel[j].BackColor == Color.Black) ||
         (panel[j].Left == ((s as Panel).Left - 5) && 
         panel[j].Top == ((s as Panel).Top + 5) &&
         panel[j].BackColor == Color.Black))
        {
            panel[i - 1].BackColor = Color.Black;
        }
0
turbanoff
Эксперт Java
4034 / 3769 / 743
Регистрация: 18.05.2010
Сообщений: 9,330
Записей в блоге: 11
Завершенные тесты: 1
07.03.2012, 08:25 5
Цитата Сообщение от panfilov Посмотреть сообщение
panel[j] - В экземпляре объекта не задана ссылка на объект. Как это исправить?
Проблема не в panel[j], я же объяснил суть - нельзя использовать i в методе обработчике. Вы читаете посты вообще?

Если вам надо найти в обработчике предыдущую и следующие панели придется их искать ручками.
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
panel[i].Click += new EventHandler((obj, args) =>
{
    Panel s = obj as Panel;
    int k = Array.IndexOf(panel, s); //Находим индекс в массиве. i использовать НЕЛЬЗЯ
    s.BackColor = Color.Black;
 
    for (int j = 0; j < panel.Length; j++)
    {
        if ((panel[j].Left == (s.Left - 5) && panel[j].Top == (s.Top - 30) && panel[j].BackColor == Color.Black) ||
            (panel[j].Left == (s.Left - 35) && panel[j].Top == s.Top && panel[j].BackColor == Color.Black) ||
            (panel[j].Left == (s.Left - 5) && panel[j].Top == (s.Top + 5) && panel[j].BackColor == Color.Black))
        {
            if (k!=0)
               panel[k - 1].BackColor = Color.Black;
        }
 
        if ((panel[j].Left == (s.Left + 30) && panel[j].Top == (s.Top - 30) && panel[j].BackColor == Color.Black) ||
            (panel[j].Left == (s.Left + 35) && panel[j].Top == s.Top && panel[j].BackColor == Color.Black) ||
            (panel[j].Left == (s.Left + 30) && panel[j].Top == (s.Top + 5) && panel[j].BackColor == Color.Black))
        {
            if (k!=panel.Length-1)
               panel[k + 1].BackColor = Color.Black;
        }
    }
});
Не пишите код с лямбдами если не понимаете как они работают - выделите под обработчик отдельный обычный метод.
1
panfilov
0 / 0 / 0
Регистрация: 05.03.2012
Сообщений: 5
08.03.2012, 02:40  [ТС] 6
Спасибо за помощь!
Я правда, уже решил проблему немного другим способом:

1. Создал функцию:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
void connect(object s)
{
    if ((s as Panel).Height == 5)
    {
        foreach (Control control in Controls)
        {
            Panel p = control as Panel;
 
            if (p != null)
            {
                if ((p.Left == ((s as Panel).Left - 5) &&
                    p.Top == ((s as Panel).Top - 30) &&
                    p.BackColor == Color.Black) ||
                    (p.Left == ((s as Panel).Left - 35) &&
                    p.Top == (s as Panel).Top &&
                    p.BackColor == Color.Black) ||
                    (p.Left == ((s as Panel).Left - 5) &&
                    p.Top == ((s as Panel).Top + 5) &&
                    p.BackColor == Color.Black))
                    {
                        panel[(s as Panel).TabIndex - 1].BackColor = Color.Black;
                    }
 
                if ((p.Left == ((s as Panel).Left + 30) &&
                    p.Top == ((s as Panel).Top - 30) &&
                    p.BackColor == Color.Black) ||
                    (p.Left == ((s as Panel).Left + 35) &&
                    p.Top == (s as Panel).Top &&
                    p.BackColor == Color.Black) ||
                    (p.Left == ((s as Panel).Left + 30) &&
                    p.Top == ((s as Panel).Top + 5) &&
                    p.BackColor == Color.Black))
                    {
                        panel[(s as Panel).TabIndex + 1].BackColor = Color.Black;
                    }
            }
        }
    }
    else
    {
        int p1 = 0, p2 = 0;
 
        foreach (Control control in Controls)
        {
            Panel p = control as Panel;
 
            if (p != null)
            {
                if (p.Left == (s as Panel).Left && p.Top == ((s as Panel).Top - 5))
                {
                    p1 = p.TabIndex;
                }
 
                if (p.Left == (s as Panel).Left && p.Top == ((s as Panel).Top + 30))
                {
                    p2 = p.TabIndex;
                }
            }
        }
 
        foreach (Control control in Controls)
        {
            Panel p = control as Panel;
 
            if (p != null)
            {
                if ((p.Left == (s as Panel).Left &&
                    p.Top == ((s as Panel).Top - 35) &&
                    p.BackColor == Color.Black) ||
                    (p.Left == ((s as Panel).Left - 30) &&
                    p.Top == ((s as Panel).Top - 5) &&
                    p.BackColor == Color.Black) ||
                    (p.Left == ((s as Panel).Left + 5) &&
                    p.Top == ((s as Panel).Top - 5) &&
                    p.BackColor == Color.Black))
                    {
                        panel[p1].BackColor = Color.Black;
                    }
 
                if ((p.Left == ((s as Panel).Left - 30) &&
                    p.Top == ((s as Panel).Top + 30) &&
                    p.BackColor == Color.Black) ||
                    (p.Left == ((s as Panel).Left + 5) &&
                    p.Top == ((s as Panel).Top + 30) &&
                    p.BackColor == Color.Black) ||
                    (p.Left == (s as Panel).Left &&
                    p.Top == ((s as Panel).Top + 35) &&
                    p.BackColor == Color.Black))
                    {
                        panel[p2].BackColor = Color.Black;
                    }
            }
        }
    }
}
2. В обработчике события MouseClick заменил старый код на эту функцию:

C#
1
panel[i].Click += new EventHandler((s, args) => { (s as Panel).BackColor = Color.Black; connect(s); });
Теперь всё работает
Вот код целиком:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
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 sticks
{
    public partial class Form1 : Form
    {
        Panel[] panel = new Panel[341];
 
        void connect(object s)
        {
            if ((s as Panel).Height == 5)
            {
                foreach (Control control in Controls)
                {
                    Panel p = control as Panel;
 
                    if (p != null)
                    {
                        if ((p.Left == ((s as Panel).Left - 5) &&
                            p.Top == ((s as Panel).Top - 30) &&
                            p.BackColor == Color.Black) ||
                            (p.Left == ((s as Panel).Left - 35) &&
                            p.Top == (s as Panel).Top &&
                            p.BackColor == Color.Black) ||
                            (p.Left == ((s as Panel).Left - 5) &&
                            p.Top == ((s as Panel).Top + 5) &&
                            p.BackColor == Color.Black))
                        {
                            panel[(s as Panel).TabIndex - 1].BackColor = Color.Black;
                        }
 
                        if ((p.Left == ((s as Panel).Left + 30) &&
                            p.Top == ((s as Panel).Top - 30) &&
                            p.BackColor == Color.Black) ||
                            (p.Left == ((s as Panel).Left + 35) &&
                            p.Top == (s as Panel).Top &&
                            p.BackColor == Color.Black) ||
                            (p.Left == ((s as Panel).Left + 30) &&
                            p.Top == ((s as Panel).Top + 5) &&
                            p.BackColor == Color.Black))
                        {
                            panel[(s as Panel).TabIndex + 1].BackColor = Color.Black;
                        }
                    }
                }
            }
            else
            {
                int p1 = 0, p2 = 0;
 
                foreach (Control control in Controls)
                {
                    Panel p = control as Panel;
 
                    if (p != null)
                    {
                        if (p.Left == (s as Panel).Left && p.Top == ((s as Panel).Top - 5))
                        {
                            p1 = p.TabIndex;
                        }
 
                        if (p.Left == (s as Panel).Left && p.Top == ((s as Panel).Top + 30))
                        {
                            p2 = p.TabIndex;
                        }
                    }
                }
 
                foreach (Control control in Controls)
                {
                    Panel p = control as Panel;
 
                    if (p != null)
                    {
                        if ((p.Left == (s as Panel).Left &&
                            p.Top == ((s as Panel).Top - 35) &&
                            p.BackColor == Color.Black) ||
                            (p.Left == ((s as Panel).Left - 30) &&
                            p.Top == ((s as Panel).Top - 5) &&
                            p.BackColor == Color.Black) ||
                            (p.Left == ((s as Panel).Left + 5) &&
                            p.Top == ((s as Panel).Top - 5) &&
                            p.BackColor == Color.Black))
                        {
                            panel[p1].BackColor = Color.Black;
                        }
 
                        if ((p.Left == ((s as Panel).Left - 30) &&
                            p.Top == ((s as Panel).Top + 30) &&
                            p.BackColor == Color.Black) ||
                            (p.Left == ((s as Panel).Left + 5) &&
                            p.Top == ((s as Panel).Top + 30) &&
                            p.BackColor == Color.Black) ||
                            (p.Left == (s as Panel).Left &&
                            p.Top == ((s as Panel).Top + 35) &&
                            p.BackColor == Color.Black))
                        {
                            panel[p2].BackColor = Color.Black;
                        }
                    }
                }
            }
        }
 
        public Form1()
        {
            InitializeComponent();
 
            int i = 0, hpos = 0, vpos = 0, width = 0, height = 0;
            
            for (int row = 0; row < 21; row++)
            {
                hpos = 0;
 
                if ((row & 1) == 0)
                {
                    height = 5;
                    vpos += 30;
 
                    for (int col = 0; col < 21; col++)
                    {
                        if ((col & 1) == 0) { width = 5; hpos += 30; }
                        else { width = 30; hpos += 5; }
 
                        panel[i] = new Panel();
                        panel[i].Name = "panel" + i.ToString();
                        panel[i].TabIndex = i;
                        panel[i].Size = new Size(width, height);
                        panel[i].Location = new Point(hpos, vpos);
                        panel[i].BackColor = SystemColors.ControlLight;
 
                        if ((col & 1) != 0)
                        {
                            panel[i].MouseEnter += new EventHandler((s, args) => { if ((s as Panel).BackColor != Color.Black) (s as Panel).BackColor = SystemColors.ActiveBorder; });
                            panel[i].MouseLeave += new EventHandler((s, args) => { if ((s as Panel).BackColor != Color.Black) (s as Panel).BackColor = SystemColors.ControlLight; });
                            panel[i].Click += new EventHandler((s, args) => { (s as Panel).BackColor = Color.Black; connect(s); });
                        }
 
                        Controls.Add(panel[i]); if (i < panel.Length - 1) i++; else break;
                    }
                }
                else
                {
                    height = 30;
                    vpos += 5;
 
                    for (int col = 0; col < 11; col++)
                    {
                        width = 5;
                        hpos += 35;
 
                        panel[i] = new Panel();
                        panel[i].Name = "panel" + i.ToString();
                        panel[i].TabIndex = i;
                        panel[i].Size = new Size(width, height);
                        panel[i].Location = new Point(hpos - 5, vpos);
                        panel[i].BackColor = SystemColors.ControlLight;
                        panel[i].MouseEnter += new EventHandler((s, args) => { if ((s as Panel).BackColor != Color.Black) (s as Panel).BackColor = SystemColors.ActiveBorder; });
                        panel[i].MouseLeave += new EventHandler((s, args) => { if ((s as Panel).BackColor != Color.Black) (s as Panel).BackColor = SystemColors.ControlLight; });
                        panel[i].Click += new EventHandler((s, args) => { (s as Panel).BackColor = Color.Black; connect(s); });
                        Controls.Add(panel[i]); i++;
                    }
                }
            }
        }
    }
}
Сейчас ещё попробую ваш вариант)
0
08.03.2012, 02:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2012, 02:40

Динамическое создание компонентов
подскажите вот у меня такая проблема, надо вобщем написать программу интерфейс которой представляет...

Динамическое создание элемента и события
Здравствуйте! Подскажите пожалуйста, как при динамическом создание элемента создавать события. ...

Динамическое создание компонентов в форме с AutoScroll = true
Всем привет. В моей программе предусмотрено динамическое создание трех полей ввода с тремя...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru