显示消息在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 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";