Извините за супер длинный заголовок, у меня есть очень специфическая проблема.
Я пытаюсь сделать следующее:
При нажатии на кнопку, когда кнопка мыши нажата, я хотел бы:
- Показать форму
- Расположить форму именно там, где я хочу.Я хочу, чтобы строка заголовка находилась точно там, где находится мышь.
- Не отпуская кнопку мыши, я хочу начать движение мыши.Я хочу эмулировать, щелкнув по строке заголовка и начав перетаскивать окно.
У меня оно в основном работает, но не позиционирование окна.Я все еще могу щелкнуть, и он создает форму, но она расположена там, где в левом верхнем углу формы находится курсор мыши.Если я пытаюсь переместить окно, я могу, но когда я двигаю мышь, оно перемещается только вверх и вниз и ограничивает ось X экрана.
Вот некоторый код, которым я являюсьиспользуя:
Form NewForm = new TestForm();
NewForm.TopLevel = true;
NewForm.Owner = MainForm;
NewForm.FormBorderStyle = FormBorderStyle.Sizable;
// Calculate location ratios
float WidthRatio = (float)MouseCurrentPos.X / (float)TitleRect.Width;
int PosX = (int)(NewForm.Width * WidthRatio);
NewForm.SetDesktopLocation(Cursor.Position.X - PosX, Cursor.Position.Y);
NewForm.Select();
NewForm.Activate();
Мои основные вопросы:
- Как я могу расположить новую форму на событии Mouse Down, удерживая нажатой клавишунажмите кнопку мыши, чтобы позволить мыши перемещать и перетаскивать окно, не ведя себя странно?
- Существует ли «официальный» способ создания формы и установки ее в режим «Перетаскивание окна из строки заголовка»?Не уверен, что официальный термин, но при перетаскивании формы из строки заголовка.Прямо сейчас мой код работает, но кажется, что он случайно работает, не работает официально.