65.9K
CodeProject 正在变化。 阅读更多。
Home

从子窗口访问父状态栏

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (8投票s)

2004年11月30日

CPOL

1分钟阅读

viewsIcon

61721

downloadIcon

2

从子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 函数,或者将它设为面板引用数组,但您现在已经掌握了基本思路,不是吗?

更广泛的应用将受益于更全面、更好的设计。这里有一篇很棒的文章(链接)可以指导您,如果您决定深入研究窗口间通信的内部机制。


© . All rights reserved.