我想让用户能够像调整窗口大小一样调整 datagridview 的大小。我的意思是,当鼠标越过窗口边缘时,它会变为两侧箭头,您可以调整窗口大小。在 winforms 中是否可以这样做?
2 回答
尽管我完全同意 Tergiver 的观点,即这样的设计几乎总是应该被拒绝,但我记得很久以前当要求在表单上显示一些图像并且用户出于某种原因想要调整图片框的大小时,我就创建了类似的东西。因此,如果它绝对必要或学术你可以尝试这样的事情:
将网格添加到面板 将图片框添加到面板,现在将网格停靠为填充,以便它占用所有面板空间并且图片框浮动在 DataGridView 上方,您可能需要更改图片框的 z-index 以防万一它低于网格。将图片框的 Anchor 属性从 Top,Left 更改为 Bottom,Right 在网格的右下角完美对齐,使图片框尽可能小,以免遮挡网格中的任何单元格。向图片框添加一个抓手图像,该图片将用于拖动整个内容并将图片框的光标设置为 SizeNWSE。很好地混合图片框的背景色和抓手图像,使其看起来是网格的一部分。现在像这样处理图片框的鼠标移动事件:
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 是我们停靠 Grid 的面板,而 picturebox1 是网格上的图片框。
虽然可能,但这样做没有意义。相反,您应该锚定/停靠 DGV,以便用户可以调整整个表单的大小,并且 DGV 也会效仿。
在这里您可以找到有关如何在 WinForms 中布局控件的信息。http://msdn.microsoft.com/en-us/library/ms951306.aspx