小编Pou*_*Bak的帖子

Button.PerformClick() 不等待异步事件处理程序

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)

c# winforms async-await eventhandler

3
推荐指数
1
解决办法
1478
查看次数

WebView2 - 获取属性

我试图理解 WebView2 中的架构。使用 WebBrowser,我曾经从 GetElementById 返回的结果中获取属性,如下所示:Document.GetElementById("DropDownList").GetAttribute("selectedIndex")

我知道ExecuteScriptAsyncWebView2 中的 可以运行 JavaScript 并以字符串形式返回结果。但是,它看起来不知道如何从元素获取属性。下面的代码返回一个空值。尽管如此, getElementById 返回正确的结果。
ExecuteScriptAsync("document.getElementById('DropDownList').getAttribute('selectedIndex')")

我的语法不正确吗?如何获取WebView2中的属性?我们是否必须在脚本中编写一个函数并从主机调用它?

谢谢

javascript webview2

3
推荐指数
1
解决办法
7823
查看次数

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)

c# download winforms webview2

3
推荐指数
1
解决办法
5809
查看次数

用于验证重音、空格和仅字母的正则表达式

我正在寻找一个验证重音的正则表达式,它也不允许与重音不同的字符,并且允许空格但不允许除字母以外的字符。我目前使用它,但我收到空格错误。我该如何解决?

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)

允许重音、空格和字母。谢谢

javascript regex

2
推荐指数
1
解决办法
1753
查看次数

C++嵌套类相互引用

在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++的嵌套类中是否可以交叉引用?

c++ nested class visual-studio-2017

2
推荐指数
1
解决办法
85
查看次数

如何在 webview2 (c#/vb.net) 中检测鼠标点击

我尝试让事件点击 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)

c# vb.net webview2

2
推荐指数
1
解决办法
1465
查看次数

使用绝对路径显示图像

我在上传时使用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它完美无缺

我该如何解决这个问题?

html php

1
推荐指数
1
解决办法
1939
查看次数