Прочитайте и измените флажок внутри WebView2 через код C#C#

Место общения программистов C#
Ответить
Anonymous
 Прочитайте и измените флажок внутри WebView2 через код C#

Сообщение Anonymous »

У меня есть небольшое приложение на C# с внешней HTML-страницей, которая отображается в WebView2.
Я хочу прочитать и изменить состояние флажка внутри внешней страницы, отображаемой в WebView2. через код C# JavaScript должен выполняться с использованием функции ExecuteScriptAsync WebView2.
На странице HTML внутри webView2 имеется следующий флажок:


Значение (isAutoStartEnabled) флажка извлекается из базы данных sqlite.
Первая часть не работает: если isAutoStartEnabled равно true, код C# должен изменить флажок внутри webView2 установлен, а если false, он меняет его на непроверенный.
Вторая часть работает: когда вы нажимаете на флажок внутри webView2, он сохраняет значение в базе данных sqlite.
Это важная часть кода:
private void InitializeAsyncButtomButtons()
{
string dashUrl = Path.GetFullPath(
Path.Combine(AppContext.BaseDirectory, @"../../web/bottombuttons.html")
);
//MessageBox.Show(dashUrl);
//Environment.Exit(0);
if (File.Exists(dashUrl) && Uri.TryCreate(dashUrl, UriKind.Absolute, out Uri uri))
{
try
{
webViewBottomButtons.Source = new Uri(dashUrl);
//webBrowser.Navigate(new Uri(dashUrl));
//webViewBottomButtons.NavigateToString(File.ReadAllText(dashUrl)); // تحميل محتوى HTML من الملف
//webViewBottomButtons.Source = new Uri("https://adminlte.io/themes/v3/pages/tables/simple.html");

//await webViewBottomButtons.CoreWebView2.ExecuteScriptAsync("alert('Hello from C#');");
}
catch (System.UriFormatException)
{
return;
}
}
else
{
//MessageBox.Show("Error loading page, please check page URL.");
}

webViewBottomButtons.NavigationCompleted += async (s, ee) =>
{
//webViewBottomButtons.CoreWebView2.OpenDevToolsWindow();

// read autoStart value from sqlite database
bool isAutoStartEnabled = GetAutoStartFromDatabase();
//MessageBox.Show("isAutoStartEnabled: " + isAutoStartEnabled);

var script =
@"
// التعامل مع Checkbox
const checkbox = document.querySelector('input[name=""startcheckwhenopenbox""]');
if (checkbox) {{
//console.log(document.querySelector('input[name=""startcheckwhenopenbox""]'));
//checkbox.checked = {isAutoStartEnabled.ToString().ToLower()};
//console.log('Checkbox initialized with value: ' + checkbox.checked);
checkbox.addEventListener('change', () => {{
const isChecked = checkbox.checked;
window.chrome.webview.postMessage(isChecked ? 'CheckboxChecked' : 'CheckboxUnchecked');
}});
}}

// التعامل مع Label
const label1 = document.querySelector('label[name=""startcheckwhenopen""]');
if (label1) {
label1.addEventListener('mouseover', () => {
window.chrome.webview.postMessage('MouseOverLabel');
});
label1.addEventListener('mouseout', () => {
window.chrome.webview.postMessage('MouseOutLabel');
});
label1.addEventListener('mouseleave', () => {
window.chrome.webview.postMessage('MouseOutLabel');
});
label1.addEventListener('mousedown', () => {
window.chrome.webview.postMessage('MouseDownLabel');
});
label1.addEventListener('mouseenter', () => { // تم تصحيح الحدث هنا
window.chrome.webview.postMessage('MouseEnterLabel');
});
}

";
if (webViewBottomButtons.CoreWebView2 != null)
{
await webViewBottomButtons.CoreWebView2.ExecuteScriptAsync(script);
}
};

// استقبال الرسائل من الصفحة
webViewBottomButtons.CoreWebView2.WebMessageReceived += async (sender, args) =>
{
string message = args.WebMessageAsJson.Trim('"');

switch (message)
{
case "MouseOverLabel":
await Task.Delay(1000); // تأخير 1 ثانية
ShowCustomToolTip("Start Check Process When Program Opened");
break;

case "MouseOutLabel":
case "MouseLeaveLabel":
tip.Hide(webViewBottomButtonsToolTip); // إخفاء الـ Tooltip
break;

case "MouseDownLabel":
case "MouseEnterLabel":
tip.Hide(webViewBottomButtonsToolTip); // إخفاء الـ Tooltip عند الضغط أو الدخول مرة أخرى
break;

case "CheckboxChecked":
MessageBox.Show("Checkbox is checked: true");
UpdateStartWhenOpenInDatabase(true);
break;

case "CheckboxUnchecked":
MessageBox.Show("Checkbox is checked: false");
UpdateStartWhenOpenInDatabase(false);
break;

default:

break;
}
};
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... sharp-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»