我编写了一个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");
}