Доступ к экземпляру другого класса
n_string
Дата: 13.01.2010 10:55:54
Есть главная форма, на эту форму выводится первый UserControl1, который состоит из множество экземпляров класса другого UserControl2-а (создается грид, на нем типа много кнопок).
При создании UserControl1 на каждую клетку UserControl2 вешаю делегат:
mathCell.MouseDown += new MouseEventHandler(MathCell_MouseDown);
Также на эту форму выводится другой UserControl3, на котором расположен индикатор.
При клике на клетку индикатор должен отобразить состояние.
Проблема: не могу получить доступ к методам индикатора в экземпляре UserControl3.
Приложение уже написано, возникла проблема только с этой фичей. Как это правильно сделать? Как получить доступ к экземпляру индикатора из экземпляра другого класса?
skyANA
Дата: 13.01.2010 11:15:12
Реализовать в классе UserControl3 метод UpdateUI, которому в качестве параметра передавать экземпляр объекта, характеризующего состояние
или
Сделать индикатор пабликом
или
Использовать рефлексию
n_string
Дата: 13.01.2010 11:27:53
1. Не могу использовать static методы.
2. Он и так public, проблема, в том, что я не могу добраться до экземпляра класса и использовать уже реализованный метод DrawState(State state), который используют другие классы приложения.
3. Смутно представляю как обратится в рефлексии, может кто-нибудь покажет примерчик?
skyANA
Дата: 13.01.2010 11:39:45
n_string |
2. Он и так public, проблема, в том, что я не могу добраться до экземпляра класса и использовать уже реализованный метод DrawState(State state), который используют другие классы приложения. |
Что-то я не понял. А как Вы пытаетесь до него "добраться"? Покажите код.
n_string
Дата: 13.01.2010 11:59:00
Собственно и показать нечего. Я обращаюсь из класса UserControl2:
public void MathCell_MouseDown(object sender, MouseEventArgs e)
{
}
skyANA
Дата: 13.01.2010 12:15:27
Ааа... Вы пытаетесь внутри класса UserControl2 добраться до экземплара класса UserControl3 :) Плохая мысль.
Вам нужно в классе UserControl2 реализовать событие (делегат), характеризующее изменение состояния внутри UserControl2.
Инициировать его в обработчике MouseDown.
Подписаться на него в UserControl1 и уже из UserControl1 и дёргать метод DrawState.
n_string
Дата: 13.01.2010 13:21:43
skyANA, спасибо вам большое, так и сделал. Теперь все прекрасно работает.