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

本文关键字:状态栏 消息 MDI 显示 | 更新日期: 2023-09-27 18:01:36

这是最简单的事情,但我不能更新状态栏上的文本。我刚开始用c#工作,但找不到解决方案。我尝试了下面的代码:

Mdiparent

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

子窗体

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

它没有在状态栏显示状态文本。我哪里做错了?

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

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

选项1

在您的MDI父窗体(让我们假设,frmMain是MDI父窗体)窗体中,您有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的文本属性。如果你返回menuStrip1本身,那么你就可以访问那个控件的所有属性。如果你声明了一个方法,它将设置toolStripStatusLabel1的文本属性,那么你只能设置文本。根据你的需要决定你想要什么。

返回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是一个enum

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

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

你可以试着用

this.MdiParent 

代替

new MDIParent1()

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

First在"mdi parent name".Designer.cs中,将private成员类型或成员类型更改为public

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