使用C#移动winform时出现问题

时间:2010-04-19 02:53:13

标签: c# winforms

我的表单没有标题栏,所以我正在实现拖动代码 屏幕周围的整个表格。我使用下面的代码来做到这一点,这很好。 我的表单中有两个面板,PanelAPanelB。在启动期间我展示 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 个答案:

答案 0 :(得分:1)

编辑:我意识到您不是在询问拖放,而是在屏幕上移动表单。 (感谢@Veer。)我已经编辑了你的问题,以帮助澄清这一点。拖放是完全不同的事情,因为它将信息从一个控件拖动到另一个控件。

我的答案的相同原则仍然适用,因为鼠标事件也在控制级别处理 - 您可能还需要处理来自PanelB的鼠标事件。