我正在运行包含大多数UI元素的主WinForm,然后在选择“添加”按钮时调用“添加”表单。它应该接收输入,并在接受后将其发送回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
}
不确定如何处理 - 任何建议?
答案 0 :(得分:0)
由于“添加”对话框应该是模态的,因此解耦的方法是仅关闭具有“正常”状态的对话框。即表单只是一个输入控件,实际上并没有“做”任何事情。
然后主表格可以:
1)检查ShowDialog(),
之后对话框的关闭方式2)调用一些GetResult()函数,在处理它之前从add表单中获取值。
3)调用实际创建并重新加载DashObjects的业务逻辑。