У меня есть небольшое приложение на 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
Чтение и изменение флажка внутри WebView2 с помощью кода C#. ⇐ C#
Место общения программистов C#
-
Anonymous
1734462895
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;
}
};
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79286438/read-and-modify-a-checkbox-inside-webview2-through-c-sharp-code[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия