【问题标题】:Allow user to resize form/dataGridView using their borders允许用户使用边框调整表单/dataGridView 的大小
【发布时间】:2013-01-31 15:31:36
【问题描述】:

我正在使用表单和 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;
        }
    }

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

【问题讨论】:

  • winforms 中默认调整大小的方式有什么问题?如果您有停靠/锚定控件,为什么要实现自己的机制?你看过SplitPanel控件吗?
  • 我不知道为什么我在那个问题中添加了表格。这些表格本身就允许该功能。但 dataGridViews 没有。所以问题是关于dataGridViews。我以前从未使用过 SplitPanel。
  • 那么我建议您尝试将 DataGridViews 停靠在一个或多个 SplitPanel 中,看看是否能解决您的问题,如果我理解的话...
  • 刚刚尝试了SplitPanel。那也不行。
  • 几乎我希望能够通过拖动它的边框来调整 dataGridView 的大小。就像我说的,我现在拥有它的方式有效。我只想知道如何使用控件的边框而不是在角落使用图片框。

标签: c# winforms visual-studio-2010 datagridview resize


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-03-21
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多