【问题标题】:C# MDI: How to change parent status label to active child form nameC# MDI:如何将父状态标签更改为活动子窗体名称
【发布时间】:2014-10-10 22:28:24
【问题描述】:

我正在开发一个 Windows 窗体 MDI 应用程序,它可以在自身内部创建新的子窗体。父窗体在 Statusstrip 中有一个 StatusLabel。我试图弄清楚如何将父表单的 StatusLabel 文本值更改为活动子表单的名称。我在子表单中创建了一个“激活”事件,但我不知道如何从子表单“激活”代码块中更改父表单 statusLabel。

基本上我想将父表单中的标签更改为子表单名称属性。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# forms parent-child mdi toolstripstatuslabel


    【解决方案1】:

    尝试订阅子窗体的Activated事件:

    protected override void OnLoad(EventArgs e) {
      base.OnLoad(e);
    
      for (int i = 0; i < 3; ++i) {
        Form f = new Form();
        f.Activated += f_Activated;
        f.MdiParent = this;
        f.Text = "Form #" + i.ToString();
        f.Show();
      }      
    }
    
    void f_Activated(object sender, EventArgs e) {
      toolStripStatusLabel1.Text = ((Form)sender).Text;
    }
    

    【讨论】:

    • 这段代码会进入孩子激活的代码块吗?
    • @danslik 我向您展示的所有这些代码都在 MDI 父级中。当我创建子表单时,我让 parent 监听孩子的激活事件。然后我可以将发件人转换为表单并获取表单的标题。如果您想要名称,您可以将 .Text 替换为 .Name(并在创建表单时为其命名,我的代码省略了该名称)。
    • 感谢您迄今为止的帮助,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2020-10-12
    相关资源
    最近更新 更多