跨界沟通

时间:2016-07-21 12:31:44

标签: c# class communication

我正在运行包含大多数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
    }

不确定如何处理 - 任何建议?

1 个答案:

答案 0 :(得分:0)

由于“添加”对话框应该是模态的,因此解耦的方法是仅关闭具有“正常”状态的对话框。即表单只是一个输入控件,实际上并没有“做”任何事情。

然后主表格可以:

1)检查ShowDialog(),

之后对话框的关闭方式

2)调用一些GetResult()函数,在处理它之前从add表单中获取值。

3)调用实际创建并重新加载DashObjects的业务逻辑。