【问题标题】:Make a panel resizable to the user [closed]使面板可调整大小以供用户使用 [关闭]
【发布时间】:2017-07-10 09:21:50
【问题描述】:

我有 1 个窗口形式的面板,设置为特定的宽度和高度,并且想要重新创建类似于如何在 Microsoft 绘画中调整绘画框的宽度和高度的东西。如何为用户调整面板大小,以便他们可以从宽度和高度调整大小?

【问题讨论】:

  • 这取决于表单的布局。请在您的布局中添加图片。
  • 您必须使用一些拇指/手柄(简单的用户控制)并将它们设置在面板角落和边缘中间。然后你只需创建一些拖动机制。

标签: c# windows visual-studio


【解决方案1】:

您可以创建自己的UserControl(例如称为ResizablePanel),在其中使用Panel,将其Anchor 设置为Top, Bottom, Left, Right

调整Panel 的大小,使其几乎覆盖UserControl 的所有角落。这张图黑色部分是UserControl,白色部分是你的Panel

那么你必须使用 3 个事件:ResizablePanel_MouseDownResizablePanel_MouseMoveResizablePanel_MouseUp

private void ResizablePanel_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        isResizeMode = true;
    }
}

private void ResizablePanel_MouseMove(object sender, MouseEventArgs e)
{
    if (isResizeMode)
    {
        this.Size = new Size(e.X, e.Y);
    }
}

private void ResizablePanel_MouseUp(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        isResizeMode = false;
    }
}

现在您可以单击ResizablePanel 边框直接调整其大小。

【讨论】:

  • 哇,那个 GIF ?。 (Gruß aus Göppingen!)
  • 哈哈,我不得不承认,这大大加强了这个问题?(Grüße zurück aus Stuttgart!)
  • @Janes Abou Chleih 非常感谢!我完全按照你在帖子中所说的做了,这对我很有帮助
  • @hindstrust 不客气。如果您认为这是对您的问题的回答并对您​​有所帮助,您可以使用赞成和反对按钮下的绿色复选标记将其标记为已接受。 meta.stackexchange.com/questions/5234/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多