【发布时间】:2011-07-12 22:00:41
【问题描述】:
我有多个基于表单的应用程序,因为我有一些输入表单,如果在输入表单中填写并单击提交按钮,那么我想在主表单状态条中显示提交状态
我是这样用的,但是不行
Main status = new Main();
status.workStatusStrip.Text = "Submitted Successfully";
首选示例代码..
【问题讨论】:
我有多个基于表单的应用程序,因为我有一些输入表单,如果在输入表单中填写并单击提交按钮,那么我想在主表单状态条中显示提交状态
我是这样用的,但是不行
Main status = new Main();
status.workStatusStrip.Text = "Submitted Successfully";
首选示例代码..
【问题讨论】:
这对你有帮助
WindowsFormsApplication1
{
public partial class Form1 : Form
{
static Label statusMessageLabel;
public static string StatusText { set { statusMessageLabel.Text = value; } }
public Form1()
{
InitializeComponent();
statusMessageLabel = label1;
// from anywhere ->
Form1.StatusText = "a message";
}
}
}
【讨论】:
你有两个选择,从你的问题中不能说选择哪个选项。
第一:
让您的“数据输入表单”派生自某个基类,该基类定义状态更改委托和该委托的事件,如下所示
public delegate void StatusChange(string Status);
public event StatusChange OnStatusChange;
现在在您的主表单中为每个这样创建的数据输入表单订阅该事件
SomeDataEntry de = new SomeDataEntry();
de.OnStatusChange += StatusChanger;
de.Show(); // or whatever
以形式做
if (OnStatusChange!=null) {
OnStatusChange("status text");
}
在主窗体中做
void StatusChanger(string Status)
{
status.Text=Status;
}
第二:
像 Chandan 建议的那样做,但请不要让成员静态,而是有一个接口,有一个成员,从它派生,将接口传递给数据输入表单,并调用它的方法来更新状态文本数据输入表单。
【讨论】: