Создайте форму с помощью Mouse Down, установите форму как активную и начинайте перетаскивать форму при перемещении мыши - PullRequest
0 голосов
/ 23 мая 2018

Извините за супер длинный заголовок, у меня есть очень специфическая проблема.

Я пытаюсь сделать следующее:

При нажатии на кнопку, когда кнопка мыши нажата, я хотел бы:

  1. Показать форму
  2. Расположить форму именно там, где я хочу.Я хочу, чтобы строка заголовка находилась точно там, где находится мышь.
  3. Не отпуская кнопку мыши, я хочу начать движение мыши.Я хочу эмулировать, щелкнув по строке заголовка и начав перетаскивать окно.

У меня оно в основном работает, но не позиционирование окна.Я все еще могу щелкнуть, и он создает форму, но она расположена там, где в левом верхнем углу формы находится курсор мыши.Если я пытаюсь переместить окно, я могу, но когда я двигаю мышь, оно перемещается только вверх и вниз и ограничивает ось 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();

Мои основные вопросы:

  1. Как я могу расположить новую форму на событии Mouse Down, удерживая нажатой клавишунажмите кнопку мыши, чтобы позволить мыши перемещать и перетаскивать окно, не ведя себя странно?
  2. Существует ли «официальный» способ создания формы и установки ее в режим «Перетаскивание окна из строки заголовка»?Не уверен, что официальный термин, но при перетаскивании формы из строки заголовка.Прямо сейчас мой код работает, но кажется, что он случайно работает, не работает официально.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...