从子窗口访问父状态栏





4.00/5 (8投票s)
从子MDI窗体更新父窗体的状态栏面板。
引言
像许多其他人一样,我一直在寻找一种从 MDI 父窗口的子窗口访问状态栏的最简单、代码最少的方式。
同样,像大多数其他人一样,我发现这似乎就像圣杯一样……有人知道,但却不肯透露。
好吧,在搜索上浪费时间,并找到各种关于反射、事件等的建议后,我决定进行一些编码——用旧意义上的黑客方式。
以下代码运行良好,但仅在 XP Pro 系统上使用 VSNet2K3 进行过测试。
步骤如下
假设状态栏有一个面板……
- 在子窗口中添加以下变量
public System.Windows.Forms.StatusBarPanel pfrm_sbp1 = null;
- 在您想要更新状态栏的地方添加以下代码 面板:
pfrm_sp1.Text = "How did he do that?";
- 在父窗口中创建子窗口时,设置引用
Form2 newMDIChild = new Form2(); newMDIChild.MdiParent = this; newMDIChild.pfrm_sp1 = statusBarPanel1; newMDIChild.Show();
当然,您可以通过其他更安全的机制来做到这一点(请这样做)——使引用变量私有,并带有 get/set 函数,或者将它设为面板引用数组,但您现在已经掌握了基本思路,不是吗?
更广泛的应用将受益于更全面、更好的设计。这里有一篇很棒的文章(链接)可以指导您,如果您决定深入研究窗口间通信的内部机制。