尝试将参数传递给新的 EventHandler
Trying to pass a parameter to a new EventHandler
我正在使用新的 WebView2
将文本插入到 Edge 中的文本框中。我有以下事件:
webView.NavigationCompleted += new EventHandler<CoreWebView2NavigationCompletedEventArgs>(InputText);
它运行以下代码:
private async void InputText(object sender, CoreWebView2NavigationCompletedEventArgs args)
{
await webView.ExecuteScriptAsync("document.getElementById('Textbox').value = 'Test';");
}
这适用于我正在玩的测试站点。但是,我想将脚本作为字符串变量传递给 InputText
方法。尝试将其添加到它的声明中,委托没有重载,例如:
webView.NavigationCompleted += new EventHandler<CoreWebView2NavigationCompletedEventArgs>(e => InputText(this, e, "Test"));
private async void InputText(object sender, CoreWebView2NavigationCompletedEventArgs args, string test)
{
await webView.ExecuteScriptAsync("document.getElementById('Textbox').value = 'Test';");
}
有没有办法重载它来添加参数?
EventHandler<CoreWebView2NavigationCompletedEventArgs>
委托具有声明 object
类型的参数 sender
和 CoreWebView2NavigationCompletedEventArgs
类型的 e
的签名。
public delegate void EventHandler<CoreWebView2NavigationCompletedEventArgs>(object sender, CoreWebView2NavigationCompletedEventArgs e);
然而,lambda表达式e => InputText(this, e, "Test")
只有一个参数e
。您需要为 sender
添加第二个参数以匹配上面的委托签名。我们称它为 s
.
(s, e) => InputText(this, e, "Test")
如果您无论如何都不使用该参数,您也可以使用丢弃运算符显式忽略它。
(_, e) => InputText(this, e, "Test")
另请确保您的 test
参数在您的方法中使用。在这里,我使用带 $
的字符串插值将 test
的值插入到您的脚本中。
private async void InputText(object sender, CoreWebView2NavigationCompletedEventArgs args, string test)
{
await webView.ExecuteScriptAsync($"document.getElementById('Textbox').value = '{test}';");
}
我正在使用新的 WebView2
将文本插入到 Edge 中的文本框中。我有以下事件:
webView.NavigationCompleted += new EventHandler<CoreWebView2NavigationCompletedEventArgs>(InputText);
它运行以下代码:
private async void InputText(object sender, CoreWebView2NavigationCompletedEventArgs args)
{
await webView.ExecuteScriptAsync("document.getElementById('Textbox').value = 'Test';");
}
这适用于我正在玩的测试站点。但是,我想将脚本作为字符串变量传递给 InputText
方法。尝试将其添加到它的声明中,委托没有重载,例如:
webView.NavigationCompleted += new EventHandler<CoreWebView2NavigationCompletedEventArgs>(e => InputText(this, e, "Test"));
private async void InputText(object sender, CoreWebView2NavigationCompletedEventArgs args, string test)
{
await webView.ExecuteScriptAsync("document.getElementById('Textbox').value = 'Test';");
}
有没有办法重载它来添加参数?
EventHandler<CoreWebView2NavigationCompletedEventArgs>
委托具有声明 object
类型的参数 sender
和 CoreWebView2NavigationCompletedEventArgs
类型的 e
的签名。
public delegate void EventHandler<CoreWebView2NavigationCompletedEventArgs>(object sender, CoreWebView2NavigationCompletedEventArgs e);
然而,lambda表达式e => InputText(this, e, "Test")
只有一个参数e
。您需要为 sender
添加第二个参数以匹配上面的委托签名。我们称它为 s
.
(s, e) => InputText(this, e, "Test")
如果您无论如何都不使用该参数,您也可以使用丢弃运算符显式忽略它。
(_, e) => InputText(this, e, "Test")
另请确保您的 test
参数在您的方法中使用。在这里,我使用带 $
的字符串插值将 test
的值插入到您的脚本中。
private async void InputText(object sender, CoreWebView2NavigationCompletedEventArgs args, string test)
{
await webView.ExecuteScriptAsync($"document.getElementById('Textbox').value = '{test}';");
}