Проблема с перемещением winform с использованием C # - PullRequest
0 голосов
/ 19 апреля 2010

Моя форма не имеет строки заголовка, поэтому я реализую код для перетаскивания вся форма вокруг экрана. Я использую приведенный ниже код, чтобы сделать это, который отлично работает. У меня есть две панели в моей форме, PanelA и PanelB. Во время запуска я показываю PanelA, где перетаскивание работает отлично. Позже, когда пользователь нажимает кнопка в PanelA, мне нужно сделать PanelA невидимым и показать PanelB Однако перетаскивание не работает, если отображается PanelB. Что такое проблема здесь?

private void SerialPortScanner_MouseUp(object sender, MouseEventArgs e)
{
    this.drag = false; 
}

private void SerialPortScanner_MouseDown(object sender, MouseEventArgs e)
{
    this.drag = true;
    this.start_point = new Point(e.X, e.Y);
}

private void SerialPortScanner_MouseMove(object sender, MouseEventArgs e)
{
    if (this.drag)
    {
        Point p1 = new Point(e.X, e.Y);
        Point p2 = this.PointToScreen(p1);
        Point p3 = new Point(p2.X - this.start_point.X,
                             p2.Y - this.start_point.Y);
        this.Location = p3;
    }
} 

1 Ответ

1 голос
/ 19 апреля 2010

Редактировать: Я понял, что вы спрашиваете не о drag & drop , а о перемещении вашей формы по экрану. (Спасибо @Veer.) Я отредактировал ваш вопрос, чтобы прояснить это. Перетаскивание - это совершенно другая вещь, поскольку она перетаскивает информацию из одного элемента управления в другой.

Тем не менее, тот же принцип моего ответа остается в силе, поскольку события мыши также обрабатываются на уровне управления - вам может понадобиться обрабатывать события мыши также с PanelB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...