2012-07-24 122 views

回答

2

虽然我完全同意Tergiver这样的设计应该几乎总是被拒绝,但我记得当需求是在窗体上显示几张图像时创建类似的背景,并且用户想要调整图像框的大小原因。因此,如果它绝对必要或学术,你可以尝试这样的事情:

将网格添加到面板添加一个图片框到面板,现在停靠网格作为填充,以便占用所有面板空间和图片框浮动在DataGridView上方,如果它不在网格之下,您可能需要更改图片框的z索引。将图片框的Anchor属性从Top,Left到Bottom,Right更改为在网格右下角完美对齐,保持图片框尽可能小,以免遮挡网格中的任何单元格。将一个抓手图像添加到图片框,这将用于拖动整个东西,并将图片框的光标设置为SizeNWSE。将picturebox的背景颜色和抓手图像很好地混合起来,以便它看起来是网格的一部分。现在处理图片框的鼠标移动事件是这样的:

private void pictureBox1_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (e.Button == System.Windows.Forms.MouseButtons.Left) 
     { 
      this.panel1.Height = pictureBox1.Top + e.Y; 
      this.panel1.Width = pictureBox1.Left + e.X; 
     } 
    } 

Panel1的是我们已经停靠了网格和picturebox1是在网格PictureBox的面板。

1

尽管可能,但这样做没有任何意义。相反,您应该锚定/停靠DGV,以便用户可以调整整个表单的尺寸,并且DGV也会跟随。

在这里您可以找到有关如何在WinForms中布局控件的信息。 http://msdn.microsoft.com/en-us/library/ms951306.aspx

+0

我知道,但那不是我要找的。 – armin 2012-07-24 18:36:43

+0

@armin如果您的客户区有太多空闲空间以致用户需要调整其控件大小,那么您可能会出错。如果你准确地描述了你的布局管理要求,那么很可能我们可以建议一个(更简单和“标准”)的替代方案..也许是一两个分隔符。 – Tergiver 2012-07-24 18:41:12