Я борюсь с чем-то, что, как мне кажется, должно быть легко (иш). У меня есть форма окна и панель flowgridlayout внизу формы. Внутри этой формы я динамически заполняю ее X пользовательскими элементами управления. Все элементы управления однотипны.
Цель состоит в том, что когда пользователь наводит указатель мыши на элемент управления, он открывает другую форму и размещает ее там, где находится указатель мыши. Когда мышь покидает форму, открытая форма исчезает.
Это почти отлично работает. Проблема в том, что внутри пользовательского элемента управления есть что-то вроде метки или текстового поля. Считается, что он покинул UC, поэтому форма исчезает.
Тогда я подумал использовать X и Y, чтобы определить, находится ли он внутри UC, но я не могу этого понять.
Могу я спросить:
1) Как лучше всего к этому подойти? 2) Как я могу его закодировать, поскольку UC динамические, я не могу точно знать, где они будут.
Спасибо
ИЗМЕНИТЬ
Я пытаюсь понять указатели мыши, но не добираюсь до них. Код ниже находится в событии UC SmallTagBox_MouseLeave:
Point loc = this.Location;
Point p = this.PointToScreen(this.Location);
Point p2 = this.PointToScreen(this.Parent.Location);
Point ms = MousePosition;
Rectangle screenBounds = new Rectangle(this.PointToScreen(this.Location), this.Size);
if (!screenBounds.Contains(ms))
{
thw.Close();
thw = null;
}
- loc {X = 275 Y = 3} System.Drawing.Point
- p {X = 808 Y = 908} System.Drawing.Point
- p {X = 808 Y = 908} System.Drawing.Point
- p2 {X = 545 Y = 1542} System.Drawing.Point
- мс {X = 574 Y = 914} System.Drawing.Point
- screenBounds {X = 808 Y = 908 Width = 62 Height = 29} System.Drawing.Rectangle
Я не понимаю, как p2 (его родитель) может иметь большее значение Y относительно экрана.