class MyButton :Button
{
...
}
class MyPanel :Panel
{
public List<MyButton> mBtnArray;
....
}
MyButton.Parent = MyPanel;
private void MyButton_Click(object sender, EventArgs e)
{
MyButton btn = sender as MyButton;
MyPanel pan = btn.Parent as MyPanel;
foreach (MyButton mBtn in pan.mBtnArray)
{
// здесь делаем что хотим
}
}
Взаимодействие 2 классов на С#
Суть проблемы:
Есть класс унаследованный от Button, есть 2-ой класс унаследован от Panel,т.е. используется в качестве контейнера.
2ой класс своим членом имеет 2мерный массив объектов 1го класса.
Подскажите пожалуйста, как мне организовать взаимодействие классов таким образом, чтобы при обработке события, возникающего в 1ом классе я мог бы работать с массивом из 2го класса.
Пожалуйста не стесняйтесь предлагать любые Ваши версии - все обсудим, все разжуем, если нужны будут подробности, также спрашивайте - отвечу!
Искренне верю что т.с. "Мозговым штурмом" совместно с Вами, талантливыми программистами мы сможем решить эту проблемКу!
Очень жду ответов):)
если правильно понял:
С массивом работать было бы логично работать непосредственно в потомке от Panel, следовательно, можно просто подписываться на соответствующее событие при добавлении кнопки в массив.
И поэтому я решил свою проблемку как говорится "по-тупому":
Так как класс-контейнер в приложении всегда возможен только один я объявил статическим его поле с массивом кнопок, ну и соответственно у меня все получилось))
Все равно хочу Вам выразить благодарность за то, что откликнулись, ну а я пойду ИЗУЧАТЬ С# дальше)
Код:
private void MyPanel_ControlAdded(object sender, ControlEventArgs e)
{
try
{
MyButton button = e.Control as MyButton;
button.Click += new EventHandler(Button_Click);
}
catch // (InvalidCastException ex)
{
return;
}
}
void Control_Click(object sender, EventArgs e)
{
MyButton button = sender as MyButton;
// Делаем чё надо. Скажем, foreach (MyButton control in this.Controls)...
}
{
try
{
MyButton button = e.Control as MyButton;
button.Click += new EventHandler(Button_Click);
}
catch // (InvalidCastException ex)
{
return;
}
}
void Control_Click(object sender, EventArgs e)
{
MyButton button = sender as MyButton;
// Делаем чё надо. Скажем, foreach (MyButton control in this.Controls)...
}
Например, две тысячи пятая студия предлагает автоматически сгенерировать обработчик после ввода +=
Спасибо.