#vb.net #winforms #printing #arguments #webview2
Вопрос:
Я пытаюсь печатать с помощью элемента управления Webview2.
Я могу печатать с помощью диалогового окна, используя следующий код:
Await WebView_Browser1.CoreWebView2.ExecuteScriptAsync("window.print();")
Но я хотел бы печатать молча.
С Edge мы можем использовать параметр —Печать в киоске, как в Chrome.
Это свойство, которое я ищу: CoreWebView2EnvironmentOptions.Дополнительные аргументы
Но как я могу запустить элемент управления Webview2, используя эти параметры?
Я просмотрел несколько примеров, подобных этому: Ссылка, но преобразование их в VB.NET использование https://converter.telerik.com/ похоже, не работает. Возможно ли это с помощью WinForms? Спасибо за уделенное время!
Это то, что у меня есть до сих пор:
Dim opts As New CoreWebView2EnvironmentOptions With {.AdditionalBrowserArguments = "--kiosk-printing"}
Dim env As CoreWebView2Environment = Await CoreWebView2Environment.CreateAsync(Nothing, Nothing, Nothing), opts)
Dim tsk As Task = WebView_Browser1.EnsureCoreWebView2Async(env)
Но выдает мне ошибку: «Ожидание» может использоваться только в асинхронном методе. Подумайте о том, чтобы пометить этот метод модификатором «Асинхронный» и изменить его тип возврата на «Задача».
И я не знаю, как это использовать, не мог бы кто-нибудь привести мне пример?
Обновить
Это текущий код, который у меня есть, но он не работает.
Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Await InitializeAsync()
End Sub
Private Async Function InitializeAsync() As Task
Dim opts As New CoreWebView2EnvironmentOptions With {.AdditionalBrowserArguments = "--kiosk-printing"}
Dim env = Await CoreWebView2Environment.CreateAsync(Nothing, Nothing, opts)
AddHandler WebView_Browser1.CoreWebView2.FrameNavigationCompleted, AddressOf WebView_Browser1_FrameNavigationCompleted
Await WebView_Browser1.EnsureCoreWebView2Async(env)
End Function
Private Sub WV_CoreWebView2Ready1(sender As Object, e As EventArgs) Handles WebView_Browser1.CoreWebView2InitializationCompleted
WebView_Browser1.CoreWebView2.Navigate("https://www.google.com")
End Sub
Я не знаю, как использовать аргументы с моим WebView_Browser1.
Может кто-нибудь, пожалуйста, привести мне пример того, как с этим бороться?
Спасибо!
Комментарии:
1.
dim options = new CoreWebView2EnvironmentOptions("--proxy-server=""ProxyName:Port""") dim env = await CoreWebView2Environment.CreateAsync(Nothing, Nothing, options) await [WebView2 Instance].EnsureCoreWebView2Async(env)
2. Спасибо! Но где я могу разместить это в Form_load? и среда ожидания CoreWebView2Environment выдает мне ошибку: «Ожидание» может использоваться только в асинхронном методе. Подумайте о том, чтобы пометить этот метод модификатором «Асинхронный» и изменить его тип возврата на «Задача».
3. Отметьте обработчик событий «Form_load»
Async
тоже.4. Вам нужно использовать
Async
метод. Какой метод, зависит от того, где / когда вы инициализируете экземпляр WebView2. Если вы используете форму, то переопределитеOnLoad()
или даже подпишитесь наLoad
событие; используйте любой из этих методовAsync
. Обработчики событий могут бытьvoid
(аSub
), не нужно возвращать задачу .5. Спасибо за ваш комментарий, я обновил вопрос.