我要在MDI上添加一个侧边栏形式(不是孩子)并将其停靠在右侧。 侧栏的顶部似乎与工具栏重叠。手动调整大小(通过拖动)时,侧栏看起来“神奇”。
调整大小之前:
调整大小后:
public partial class MDI : Form
{
private void InitGenealogicalTree()
{
var form = new GenealogicalTreeForm();
form.TopLevel = false;
form.WindowState = FormWindowState.Normal;
form.Dock = DockStyle.Right;
this.Controls.Add(form);
}
}
注意:ToolStrip是在设计模式下添加的。
如何在不与工具栏重叠的情况下正确添加侧栏表单?
答案 0 :(得分:1)
侧边栏窗口不能移动,不能调整大小,也不能最大化,因此:
FormBorderStyle
设置为FixedToolWindow
。覆盖侧边栏窗口WndProc
的{{1}},以防止移动并阻止最大化:
WndProc
此外,在添加侧栏时,请将其置于最前面。这意味着应该先停靠工具栏,然后将侧边栏窗口停靠在其余区域:
protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_MOVE = 0xf010;
const int SC_MAXIMIZE = 0xf030;
if (m.Msg == WM_SYSCOMMAND)
{
int command = m.WParam.ToInt32() & 0xfff0;
if (command == SC_MOVE || command == SC_MAXIMIZE)
return;
}
base.WndProc(ref m);
}
答案 1 :(得分:0)
只需将面板置于desigener模式,您要在其中具有侧面板并在面板中显示侧面板。
以下代码可让您在面板中显示侧栏形式:
var form = new GenealogicalTreeForm();
form.TopLevel = false;
panel.Controls.Add(form);
form.Dock = DockStyle.Fill;
this.Controls.Add(form);
form.Show();