Какую версию 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;
Обратите внимание , что это хак, и правильным способом является создание такого поля / переменной в пользовательском элементе управления самостоятельно. Это более или менее демонстрация того, как это может работать.
Ответ Акрама Шахды возможен только в том случае, если ваши формы не создаются динамически, с тех пор вы можете заранее определить все действия. Тем не менее я бы не пошел по этому пути.