Рассмотрим следующую простую форму WinForms с текстовым полем и элементом управления веб-браузером. Всякий раз, когда изменения содержимого текстового поля, текст помещается в браузере: (. Я делаю что-то вроде этого в моем DownMarker кода, чтобы построить редактор Markdown с MarkdownSharp библиотекой StackOverflow в)Suppress WaitCursor для WinForms Управление WebBrowser
public class MainForm : Form
{
public MainForm()
{
var browser = new WebBrowser() { Dock = DockStyle.Fill };
var textbox = new TextBox() { Dock = DockStyle.Fill, Multiline = true };
var splitter = new SplitContainer() { Dock = DockStyle.Fill };
splitter.Panel1.Controls.Add(textbox);
splitter.Panel2.Controls.Add(browser);
this.Controls.Add(splitter);
textbox.TextChanged += delegate { browser.DocumentText = textbox.Text; };
textbox.Text = "<b>hello world</b>";
}
}
Это прекрасно работает , за исключением того, что элемент управления WebBrowser
настаивает на показе курсора ожидания, когда установлен DocumentText
, даже если обновление содержимого браузера занимает всего несколько миллисекунд. Это приводит к мерцанию курсора мыши при вводе текстового поля.
Есть ли способ устранить эти изменения курсора мыши? Я уже рассматривал ограничение скорости обновления DocumentText
, но я обнаружил, что случайное мерцание во время обновления по-прежнему вызывает раздражение, и я бы предпочел мгновенные обновления.
редактировать: ответ Ганса указал мне в правильном направлении. Изменение обработчика событий TextChanged на это, кажется, работает без курсора мерцания:
textbox.TextChanged +=
delegate
{
if (browser.Document == null)
{
browser.DocumentText = "<html><body></body></html>";
}
while ((browser.Document == null)
|| (browser.Document.Body == null))
{
Application.DoEvents();
}
browser.Document.Body.InnerHtml = textbox.Text;
};
edit2: выше по-прежнему показывает курсор ожидания, когда страница сделана тяжелее, например, путем добавления изображений. Это может быть исправлено, если делать более мелкозернистые обновления только элементов html, которые меняются, но это, очевидно, намного сложнее.
Это указывало мне в правильном направлении, спасибо! Я редактировал свой вопрос, чтобы показать окончательное решение. – 2010-11-28 23:13:10