Как узнать, в каком виде управления существуют - PullRequest
0 голосов
/ 04 июня 2011

У меня есть 2 настраиваемых элемента управления. Контроль A и контроль B

Эти элементы управления размещены в более чем 1 форме.

Пусть предположим из А и формы В

Теперь предположим, что пользователь щелкает элемент управления A в форме А. И вызывается это событие щелчка элемента управления.

Теперь, как можно определить, что элемент управления A находится в форме A.

Чтобы я мог изменить определенный атрибут элемента управления B формы A.

Ответы [ 3 ]

1 голос
/ 04 июня 2011

Вы можете использовать Control.Parent рекурсивно. Также вы можете использовать Control.TopLevelControl, если у вас нет вложенных форм. Затем вам нужно рекурсивно пройтись по Controls свойствам, чтобы найти свой второй элемент управления.

Но более правильное решение вашей задачи - создать свойство в первом элементе управления, установить его для второго элемента управления и использовать его в обработчике событий.

0 голосов
/ 04 июня 2011

Какую версию C # вы используете? Если вы используете относительно новую версию и используете Windows Presentation Foundation (WPF), вы можете сделать что-то вроде этого:

private void ControlA_MouseDown(object sender, MouseButtonEventArgs e)
{
    ((Grid)((ControlA)sender).Parent).Children
    // The above line is INCOMPLETE, you need to select the right child, but
    // you're at least in the right grid; The rest is up to you (depends on
    // the setup of your program);
}

Есть еще один вариант «взлома», который вы можете использовать, который является самым простым. Вы можете использовать свойство tag для элементов управления для хранения всего, что вам нравится, например, указатель на ControlB.

ControlA a = new ControlA();
ControlB b = new ControlB();
a.Tag = b;

Обратите внимание , что это хак, и правильным способом является создание такого поля / переменной в пользовательском элементе управления самостоятельно. Это более или менее демонстрация того, как это может работать.

Ответ Акрама Шахды возможен только в том случае, если ваши формы не создаются динамически, с тех пор вы можете заранее определить все действия. Тем не менее я бы не пошел по этому пути.

0 голосов
/ 04 июня 2011

Обрабатывать событие управления А внутри каждой формы.

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