c# - MDI 窗体中的子窗口停靠

标签 c# winforms

我有一个 MDI 窗体和一些子窗体。我将子窗体停靠到 MDI 窗口的不同区域,但是当任何一个子窗体失去焦点时,其他停靠的窗体将重新排列。由于困惑,我准备了一组图像来展示这种行为。

Image1, 在点击任何窗口之前:

enter image description here

Image2,点击窗口2后:

enter image description here

问题是当最左边的停靠窗体获得焦点时,它将调整大小到 MDI 窗口的右端而不考虑窗口 1。

我该如何解决这个问题?谢谢。

最佳答案

还有另一个修复方法。一个非常快速的例子是:

  • 创建一个新的窗口窗体 (Form1)。将其 isMidiContainer 属性设置为 true。
  • 现在,在其上放置一个面板 (Panel1) 并将其停靠属性设置为右侧,然后设置宽度。
  • 将另一个面板 (panel2) 拖放到窗体上并将其停靠栏也设置为右侧。现在这两个面板停靠在彼此旁边。

现在创建 2 个新窗口窗体(Form 2 和 Form3)。

现在,在 Form1 的主程序中,就在 InitializeComponent() 下面,添加:

Form2 f2 = new Form2();
f2.TopLevel = false;
f2.Dock = DockStyle.Fill;
panel1.Controls.Add(f2);
f2.Show();

Form3 f3 = new Form3();
f3.TopLevel = false;
f3.Dock = DockStyle.Fill;
panel2.Controls.Add(f3);
f3.Show();

这是一种略有不同的方法,但应该可以正常工作。

关于c# - MDI 窗体中的子窗口停靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8770228/

相关文章:

c# - Winforms - 单击控件的 WM_NCHITEST 消息

c# - 在 datagridview 中将某些行设置为粗体时性能下降

c# - 将 SQL 数据库存储在对象中?

c# - ASP.Net 从 jQuery 选择后上传多个文件

c# - 是否有执行 .SelectMany(x => x) 的 Linq 方法?

c# - 将我的 linq 查询结果集添加到数据集,c# asp.net 3.5

c# [Win form ] 如何更改richtextbox中仅选定文本的字体大小

c# - 如何对 PostSharp 方面进行单元测试?

一个简单数据库的 C#-mySQL 连接程序,具有 1 个执行基本操作的表

c# - 以 LocalSystem 身份登录 sql 服务