0

我正在使用表单和 dataGridViews 制作程序。我想允许用户调整表单和 dataGridViews 的大小,就像一个人在他们的电脑上调整 web 浏览器或其他窗口的大小一样。通过单击并拖动窗口的边框。我目前正在使用一个简单的版本来执行此操作。我在面板的一角有一个小图片框,其中包含一个 datGridView,停靠栏设置为 full 并添加了代码:

private void pictureBox11_MouseDown(object sender, MouseEventArgs e)
    {
        resize = true;
    }

    private void pictureBox11_MouseUp(object sender, MouseEventArgs e)
    {
        resize = false;
    }

    //Resize the Ben. List dataGrid(dataGridView4)
    private void pictureBox11_MouseMove(object sender, MouseEventArgs e)
    {
        if (resize)
        {
            this.panel4.Height = pictureBox11.Top + e.Y;
            this.panel4.Width = pictureBox11.Left + e.X;
        }
    }

这允许用户做我想做的事,但不是我希望他们怎么做。这种方式是可以接受的,但我非常想知道我是否可以用另一种方式来做。“其他方式”当然是指单击并拖动边框以调整大小的能力。我希望在这里提供一些新的有用信息,将来可以帮助我。那么有什么帮助吗?

4

1 回答 1

0

您可以使用 MouseMove 事件来执行此操作。检查 e.location 以查看鼠标是否靠近边缘或角落,然后显示适当的光标。如果鼠标按钮按下,请更改 datagridview.size 或 .location 以匹配鼠标移动。(您需要在 mousedown 事件中抓住拖动的开始。)

这类似于您概述的方式,但是您应该相对于拖动的开始进行移动,这样当按下按钮时您不会有几个像素的“跳跃”。而且,当然,有 8 个边/角需要处理。此外,对于用户来说,对光标更改有一些反馈也很重要。

使用内置锚定或对接更简单,但这种方法没有任何问题。

于 2013-01-31T17:50:29.743 回答