跨阶级沟通
本文关键字: | 更新日期: 2023-09-27 17:57:58
我正在运行一个包含大多数UI元素的主WinForm,然后在选择Add按钮时调用Add表单。它应该接收输入,并在接受后将其发送回WinForm。
当你点击主类上的"添加"按钮时,这个代码就会运行:
public void addButton_Click(object sender, EventArgs e)
{
AddView newadd = new AddView();
newadd.Show();
}
这个代码(也在主类中)应该基于AddView:中的按钮运行
public void AddDashObject(string dashName, string dashIdentifier, int dashFunction, string dashFunctionInfo, int dashVerbosity)
{
DashObject tmp = new DashObject("","",0,"",0);
tmp.DashName = dashName;
tmp.DashIdentifier = dashIdentifier;
tmp.DashFunction = dashFunction;
tmp.DashFunctionInfo = dashFunctionInfo;
tmp.DashVerbosity = dashVerbosity;
dashloaded.Add(tmp);
ReloadDashObjects();
}
我真的不确定如何在表单之间进行通信——我可以使用在主类中创建的类型和方法,但我很确定我正在创建一个单独的实例。我如何与现有的沟通?
MainView mnfrm = new MainView();
MainView.DashObject tmp = new MainView.DashObject("","",0,"",1); // Defaults
private void button1_Click(object sender, EventArgs e)
{
mnfrm.dashloaded.Add(tmp); // Add the default DashObject to MainView's currently loaded DashObjects
mnfrm.ReloadDashObjects(); // Reload the list
}
不知道该如何处理——有什么建议吗?
由于Add对话框应为模态对话框,因此执行此操作的解耦方法是只关闭状态为OK的对话框。也就是说,表单只是一个实际上不"做"任何事情的输入控件。
那么主要形式可以是:
1) 检查ShowDialog()之后对话框是如何关闭的,
2) 调用一些GetResult()函数,在处理之前从add表单中获取值。
3) 调用实际创建和重新加载DashObjects的业务逻辑。