Как получить имя контрола по координатам мыши
Нужно по наведению мыши на контрол получать его имя.
Попробовал использовать такую конструкцию:
------------------------------------------------------------------
private void Form1MouseMove(object sender, MouseEventArgs e)
{
Control c = new Control();
c = this.GetChildAtPoint(new Point(e.X, e.Y));
}
-------------------------------------------------------------------
Не работает. Объект c - всегла null.
Кто-нибудь знает в чем проблема?
P.S. А зачем писать это?
Код:
Control c = new Control();
Как получить имя контрола зная координаты курсора мыши?
[HIGHLIGHT=C#] public partial class Form1 : Form
{
private Control curctrl;
public Form1()
{
InitializeComponent();
ListenControls();
}
private void ListenControls()
{
// лямбда-функция, записывающая в curctrl текущий контрол
Action<object, EventArgs> hoverfunc =
(s,e) => curctrl = (Control)s;
// подписываем событие формы OnHover на hoverfunc
this.MouseHover += new System.EventHandler(hoverfunc);
// подписываем событие OnHover всех дочерних контролов формы на hoverfunc
foreach (Control ctrl in this.Controls)
ctrl.MouseHover += new System.EventHandler(hoverfunc);
}
}[/HIGHLIGHT]
Таким образом, в переменной curctrl и будет хранится нужный вам контрол.