最好用图像显示,我可以将窗体拖离 MDI 父级的边缘,然后出现滚动条。
更确切地说,子表单被锁定到父表单的区域。
我已经完成了对解决方案的搜索,(其中很多都在 2 年多以前得到了回答,所以我希望它们已经过时了)并且只遇到过在 Move 事件中检查坐标的人......很好,但如果我有20 个表格……或 100 个表格。我无法对所有这些进行编码,这有点傻。当然,我可以在父窗体上设置某个属性。
最佳答案
你可以做这样的事情......
步骤!:您必须制作基本表单(如用户控件)
并将此代码放在该表单中
namespace Controls
{
public partial class BaseForm : Form
{
public BaseForm()
{
InitializeComponent();
StartPosition = FormStartPosition.WindowsDefaultLocation;
MaximizeBox = false;
Width = 806;
//Width = 850;
//Height = 760;
Height = 730;
//Width = 790;
//Height = 617;
}
protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_MOVE = 0xF010;
//ShowScrollBar(this.Handle, (int)ScrollBarDirection.SB_BOTH, false);
switch (m.Msg)
{
case WM_SYSCOMMAND:
int command = m.WParam.ToInt32() & 0xfff0;
if (command == SC_MOVE)
return;
break;
}
base.WndProc(ref m);
}
}
}
然后在每种形式中你都必须像这样指定......
public partial class childform : BaseForm
{
.......
}
确保您的所有子表单大小都应该是基本表单中指定的大小
我希望它会帮助你..
关于C# MDI - 如何防止滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915164/