OpenForm MethodInvoker可能会阻止CloseForm MethodInvoker

时间:2018-08-30 09:13:29

标签: c# .net events delegates user-controls

我编写了一个UserControl,用于扩展ERP软件并从中获取其内容。我需要使用委托/事件(这里是MethodInvokers)来使ERP知道我单击某些控件时的情况。因此,基本上在我的主页上,我单击 btn_OpenBrowserForm 打开一个新表单(带有浏览器),然后按钮触发 OpenBrowserFormDelegate ,在ERP中,该表单称为 OpenBrowserForm。 (字符串网址)功能。 当我关闭webBrowserForm时,MethodInvoker OpenBrowserFormDelegate 可以很好地工作,但是 CloseBrowserFormDelegate 不会在ERP中触发。 我的假设是,当我尝试关闭BrowserForm并阻止执行 CloseBrowserFormDelegate 时, OpenBrowserFormDelegate 仍会处于活动状态,但是我是新手,似乎无法让它起作用。如果您需要任何其他信息,请告诉我。如果有人可以帮助,我将感到非常高兴。

    public event MethodInvoker OpenBrowserFormDelegate = delegate { };
    public event MethodInvoker CloseBrowserFormDelegate = delegate { };

    private void btn_OpenBrowserForm_Click(object sender, RoutedEventArgs e)
    {
        OpenBrowserFormDelegate();
        //OpenBrowserFormDelegate.Invoke();
        //OpenBrowserFormDelegate.BeginInvoke(null,null);
    }

    public void OpenBrowserForm(string URL)
    {
        WebBrowserForm webBrowserForm = new WebBrowserForm(URL);
        webBrowserForm.FormClosed += (s, e) =>
        {
            CloseBrowserFormDelegate();
        };
        webBrowserForm.Show();
    }

ERP中的伪代码:

TRIGGER OpenBrowserFormDelegate
{
    OpenBrowserForm("google.com");
}

TRIGGER CloseBrowserFormDelegate
{
    Message("Close trigger completed");
}

0 个答案:

没有答案