Gereksinimler: Önceki makale, web arayüzü ve WinForm uygulamasının birbirleriyle iletişim kurarak mesaj göndermek için nasıl uygulanacağını yazmıştı, ancak yalnızca mesaj başarılı şekilde gönderildi ve yanıt bilgisi alınamadı. Ya C# istemcisi dönüş sonucunu almak için web'den bir fonksiyon metodu çağırırsa? Ve web C# kodunu nasıl çağırıp iade değerini alıyor?
Eleştiri:
Öncelikle, uygulama renderlerine bakalım, web sitesi WinForm uygulamasını çağırıyorPano verilerini alın, WinForm uygulamasıGeri dönüş değerini almak için web'in abc yöntemini arayınŞöyle:
C# ise Web fonksiyonu yöntemini çağırır
Bu senaryo, webde JavaScript'in nasıl çalıştırılacağını gösteriyor. Bu yöntemde, ana uygulama çalıştırılacak JavaScript kodunu belirler ve kodu ExecuteScriptAsync ile web'e iletir. ExecuteScriptAsync fonksiyonu, JavaScript sonucunu ExecuteScript çağırıcısına döndürür.
Angular index.html sayfa kodu şu şekildedir:
Ön uç esas olarak bir abc fonksiyonunu tanımlar.
Winform, web'in abc fonksiyonunu aşağıdaki kodla çağırır:
Bir web sayfası C# fonksiyon metodu çağırır
Yerel nesneleri web'e aktarmak. Nesneyi web'den çağırma yöntemi çağrılır.
Bir metot çağrısını temsil eden bir mesajı kullanmak için AddHostObjectToScript API'sini kullanın. Yüksek düzeyde, bu API yerel (host) nesnelerin web'e açılmasına ve proxy olarak hareket etmesine olanak tanır. window.chrome.webview.hostObjects kullanın. {name}>a0> bu nesnelere erişin. Referans Dokümantı:Bağlantı girişi görünür.
Web sayfasında yeni bir buton oluşturun, sistemin mevcut panosunun verilerini almak için C# kodunu çağırmak için düğmeye tıklayın.
Angular app.component.html kodu şöyledir:
app.component.ts kodu şöyledir:
Ön uç JS kodu senkron çağrılar ve asenkron çağrılar içerir.
c# WebView2HostObject ana nesnesini aşağıdaki kodla tanımlar:
Not: Özel WebView2HostObject sınıfları etiketlenmelidir[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]property, aksi takdirde JS sınıfa erişemezdi.
Daha sonra yeni tanımlanmış örneği AddHostObjectToScript(String,Object) aracılığıyla aşağıdaki kodla ekleyin:
Son olarak, ön uçtaki butona tıklayarak pano verilerini elde edin, etki şu şekildedir:
(Son)
|