Considérez le formulaire WinForms simple suivant avec une zone de texte et un contrôle webbrowser. Chaque fois que le contenu change de zone de texte, le texte est poussé au navigateur: (. Je fais quelque chose comme ça dans mon code DownMarker pour construire un éditeur Markdown avec bibliothèque MarkdownSharp de Stackoverflow)Suppression de WaitCursor pour le contrôle 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>";
}
}
Cela fonctionne bien , sauf que le contrôle WebBrowser
insiste sur l'affichage du curseur d'attente chaque fois que DocumentText
est défini, même si la mise à jour du contenu du navigateur ne prend que quelques millisecondes. Le curseur de la souris scintille lorsque vous tapez dans la zone de texte.
Est-il possible de supprimer ces changements de curseur de la souris? J'ai déjà considéré les mises à jour DocumentText
limitant le taux, mais je trouve que le clignotement occasionnel lors d'une mise à jour est toujours ennuyeux et je préférerais des mises à jour instantanées.
modifier: Hans réponse m'a orienté dans la bonne direction. Modification du gestionnaire d'événements TextChanged à cela semble fonctionner sans scintillement du curseur:
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: ci-dessus montre encore le curseur d'attente lorsque la page est alourdie, par exemple en ajoutant des images. Cela peut être réparable en faisant des mises à jour plus fines des éléments html qui changent, mais c'est évidemment beaucoup plus complexe.
Cela m'a pointé dans la bonne direction, merci! J'ai édité ma question pour montrer la solution finale. –