从子c显示MDI父状态栏中的消息#

时间:2014-05-05 08:51:02

标签: c# winforms statusbar

这是最简单的事情,但我无法更新状态栏上的文字。我刚开始使用c#但找不到解决方案。我试过下面的代码:

的MdiParent

public void StutasText(string text)
{
    toolStripStatusLabel.Text = text;
}

子表格

 MDIParent1 obj = new MDIParent1();
 obj.StutasText("Hello world");
 obj.Refresh();

它未在状态栏中显示状态文本。 我哪里出错了?

5 个答案:

答案 0 :(得分:2)

((mdiMain)MdiParent).toolStripStatusLabel.Text = "My Text";
//but you must change the modifier property of toolStripStatusLabel to public etc

答案 1 :(得分:1)

您正在创建MDIParent1的新实例,而不是使用显示的实例/您的子表单所属的实例。

您可以尝试使用

this.MdiParent 

而不是

new MDIParent1()

答案 2 :(得分:1)

在MDI Parent表单中,我假设您有toolStripStatusLabel1。如果您没有,可以通过单击menuStrip控件中的小黑箭头来添加它。

选项1

在您的MDI Parent(我们假设,frmMain是MDI Parent表单)表单中,您有StatusStrip,转到frmMain.Designer.cs文件并找到该地点

private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;

制作本,

public System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;

然后,您可以从子页面访问以下内容。

ToolStripStatusLabel statusStrip=((frmMain)(frmMdiChild.MdiParent)).toolStripStatusLabel1

选项2

声明一个公共属性,它将返回toolStripStatusLabel1控件或方法,您可以在其中设置MDI父窗体中toolStripStatusLabel1的text属性。如果返回menuStrip1本身,则可以访问该控件的所有属性。如果声明一个方法,该方法将设置toolStripStatusLabel1的text属性,那么您只能设置文本。根据您的要求决定您的需求。

返回menuStrip1控件的实现。

 public ToolStripStatusLabel GetStatusBar
 {
  get
   {
     return this.toolStripStatusLabel1;
   }
 }

然后从您的子页面中,您可以使用

ToolStripStatusLabel statusStrip=((frmMain)(frmMdiChild.MdiParent)).GetStatusBar;

选项3

为了使它更漂亮一点,你可以在一个公共类中声明一个方法。然后,您可以在其他子表单中重复使用它。

 public void ShowStatusbarMessage(Form frmMdiChild, string message, NotifierType notificationType)
   {
       ToolStripStatusLabel statusStrip=((frmMain)(frmMdiChild.MdiParent)).GetStatusBar;
       statusStrip.Text = message;
       if (notificationType == NotifierType.SuccessInfo)
       {
           statusStrip.ForeColor = System.Drawing.Color.Green;
       }
       else if (notificationType == NotifierType.Warning)
       {
           statusStrip.ForeColor = System.Drawing.Color.Orange;
       }
       else
       {
           statusStrip.ForeColor = System.Drawing.Color.Red;

       }

   }

这里,NotifierType是一个枚举

答案 3 :(得分:0)

((frmMDI)this.MdiParent).yourcontrol.yourproperty = yourvalue; frmMDI是MDI表单的唯一名称。

答案 4 :(得分:0)

<强>第一 在“mdi parent name”.Designer.cs中,将类型或成员 private 更改为 public

第二次在您的代码中添加下一个代码 (("mdi parent name")MdiParent).toolStripStatusLabel.Text = "your text";