PerformClick我在用于调用事件处理程序的 Windows 窗体应用程序中遇到问题async。事件处理程序似乎没有,await而是立即返回。我创建了这个简单的应用程序来显示问题(它只是一个带有 3 个按钮的表单,很容易自己测试):
string message = "Not Started";
private async void button1_Click(object sender, EventArgs e)
{
await MyMethodAsync();
}
private void button2_Click(object sender, EventArgs e)
{
button1.PerformClick();
MessageBox.Show(message);
}
private void button3_Click(object sender, EventArgs e)
{
MessageBox.Show(message);
}
private async Task MyMethodAsync()
{
message = "Started";
await Task.Delay(2000);
message = "Finished";
}
Run Code Online (Sandbox Code Playgroud)
message这里有趣的问题是,当我点击 时,你认为会显示什么Button2?
令人惊讶的是,它显示“开始”,而不是您所期望的“完成”。换句话说,它不会await MyMethod(),它只是启动任务,然后继续。
编辑:
在这个简单的代码中,我可以通过直接从 Button2 事件处理程序调用来使其工作await Method(),如下所示:
private async void button2_Click(object …Run Code Online (Sandbox Code Playgroud) 我试图理解 WebView2 中的架构。使用 WebBrowser,我曾经从 GetElementById 返回的结果中获取属性,如下所示:Document.GetElementById("DropDownList").GetAttribute("selectedIndex")
我知道ExecuteScriptAsyncWebView2 中的 可以运行 JavaScript 并以字符串形式返回结果。但是,它看起来不知道如何从元素获取属性。下面的代码返回一个空值。尽管如此, getElementById 返回正确的结果。
ExecuteScriptAsync("document.getElementById('DropDownList').getAttribute('selectedIndex')")
我的语法不正确吗?如何获取WebView2中的属性?我们是否必须在脚本中编写一个函数并从主机调用它?
谢谢
需要通过WebView2获取下载进度。https://learn.microsoft.com/en-us/dotnet/api/microsoft.web.webview2.core.corewebview2downloadoperation?view=webview2-dotnet-1.0.865-prerelease
async void InitializeAsync()
{
var env = await CoreWebView2Environment.CreateAsync(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Microsoft\EdgeCore\92.0.887.0");
await webView.EnsureCoreWebView2Async(env);
webView.CoreWebView2.DownloadStarting += webView_DownloadStarting;
webView.CoreWebView2.Navigate("downloadURL");
}
private void webView_DownloadStarting(object sender, CoreWebView2DownloadStartingEventArgs e)
{
e.ResultFilePath = filename;
public event EventHandler<object> BytesReceivedChanged; <-- Need this event for print bytes to webView_BytesReceivedChanged
public event EventHandler<object> StateChanged; <-- Need this event for print download state to webView_StateChanged
}
private void webView_BytesReceivedChanged(object sender, CoreWebView2DownloadStartingEventArgs e)
{
Console.WriteLine(e.DownloadOperation.BytesReceived); // Bytes received
Console.WriteLine(e.DownloadOperation.TotalBytesToReceive); // Total bytes to receive
}
private void webView_StateChanged(object sender, …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个验证重音的正则表达式,它也不允许与重音不同的字符,并且允许空格但不允许除字母以外的字符。我目前使用它,但我收到空格错误。我该如何解决?
function cambiarNombre(nombre){
let regex = /^[a-zA-ZÀ-ÿ\u00f1\u00d1]+(\s*[a-zA-ZÀ-ÿ\u00f1\u00d1]*)*[a-zA-
ZÀ-ÿ\u00f1\u00d1]+$/g;
return regex.exec(nombre)[0];
}
console.log(cambiarNombre("UNA palabra ñoÑerías ")); //true
console.log(cambiarNombre("UNA palabra ñoÑerías*")); //false *
console.log(cambiarNombre("UN2A palabra1 5oÑerías")); //false 2 1 5
console.log(cambiarNombre("palabra2")); //false 2
console.log(cambiarNombre(" palabra2")); //false 2
console.log(cambiarNombre(" pálabña ")); //true
console.log(cambiarNombre("juan perez")); //true
console.log(cambiarNombre("juan pérez")); //true
console.log(cambiarNombre("juan")); //true
console.log(cambiarNombre("júan")); //true
Run Code Online (Sandbox Code Playgroud)
允许重音、空格和字母。谢谢
在C#中我可以有两个嵌套类相互引用而没有问题:
public class CFGFile
{
class Setting
{
public Entry Ent;
}
class Entry
{
public Setting Setg;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在C++中尝试相同的操作会导致问题:
class CFGFile
{
class Setting;
class Entry
{
Setting Setg;
};
class Setting
{
Entry Ent;
]
};
Run Code Online (Sandbox Code Playgroud)
我明白了
"不允许不完整的类型"
在Setg变量定义和错误
"C2079:'CFGFile :: Entry :: Setg'使用未定义的类'CFGFile :: Setting'"
编译时
我正在使用Visual Studio 2017.
在C++的嵌套类中是否可以交叉引用?
我尝试让事件点击 html 元素。使用我使用的 WebBrowser:
instance = Nothing
instance = WebBrowser1.Document
AddHandler instance.Click, AddressOf Document_Click
Run Code Online (Sandbox Code Playgroud)
但是对于 Webview2,我没有找到好的做法。我必须注入一个 javascript 代码吗?但是,我如何在 C# 或 Vb.net 应用程序中获取处理程序?
非常感谢。
这里有一个示例代码。我的函数中没有返回值:WebView1_WebMessageReceived。为什么 ?我想,我忘记了什么......
Imports System.IO
Imports Microsoft.Web.WebView2.Core
Imports Newtonsoft.Json
Class MainWindow
Public Sub New()
InitializeComponent()
InitializeSyncroComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
End Sub
Structure JsonObject
Public Key As String
'Public Value As PointF
End Structure
Async Sub InitializeSyncroComponent()
Await webview1.EnsureCoreWebView2Async
webview1.CoreWebView2.Navigate("https://google.fr/")
End Sub
Private Sub WebView1_WebMessageReceived(ByVal sender As Object, ByVal e As Microsoft.Web.WebView2.Core.CoreWebView2WebMessageReceivedEventArgs)
Dim jsonObject …Run Code Online (Sandbox Code Playgroud) 我在上传时使用uploadify将img上传到服务器我保存了数据库的绝对路径:
/var/www/html/workbench/photogallery/uploads/logo2.jpg
现在我想在浏览器中显示相同的方法,以下方法不起作用
<div id="photos">
<h3>Photo title</h3>
<P class="like"><a href="#">Like</a> </P>
<p class="date">date </p>
<p class="pclear" />
<div id="image">
<img src="<?php echo $result_set['path']; ?>" />
</div>
<p class="about">about image goes here</p>
</div>
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用.当我手动编辑路径上传/ logo2.jpg它完美无缺
我该如何解决这个问题?
c# ×3
webview2 ×3
javascript ×2
winforms ×2
async-await ×1
c++ ×1
class ×1
download ×1
eventhandler ×1
html ×1
nested ×1
php ×1
regex ×1
vb.net ×1