Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET]Problema con la gestione degli eventi in un webbrowser
Forum - C# / VB.NET - [VB.NET]Problema con la gestione degli eventi in un webbrowser

Avatar
GN (Member)
Guru


Messaggi: 770
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:55
Venerdì, 06/05/2011
Ciao a tutti.
Sto sviluppando un editor HTML WYSIWYG sfruttando la libreria MSHTML come descritto in questo articolo http://www.pierotofy.it/pages/guide_tutorials/Visual_Basic ..., e utilizzo una barra degli strumenti (ToolStrip) per visualizzare i comandi di formattazione (Grassetto, Corsivo, Sottolineato, ecc.). Vorrei fare in modo che quando l'utente seleziona del testo, se a questo testo è applicata una particolare formattazione, i rispettivi pulsanti nella ToolStrip rimangano selezionati (come nelle applicazioni Microsoft Office); però ho notato che il webbrowser non ha eventi come SelectionChanged, Click, KeyDown, ecc. e quindi non riesco a far capire al programma quando è il momento di aggiornare i pulsanti della ToolStrip (utilizzando il metodo queryCommandState() della classe IHTMLDocument2 di MSHTML). Come potrei fare?
Grazie in anticipo.

EDIT: l'unica idea che mi è venuta è po' stupida, ma visto che nessuno risponde...
L'idea è quella di usare un timer che ogni tot secondi aggiorni la barra. Ripeto che è un po' stupida perchè rallenterebbe l'esecuzione del programma; che ne dite? Avete soluzioni migliori?

Ultima modifica effettuata da GN il 08/05/2011 alle 21:25


PM
Avatar
R0gerBlack (Member)
Expert


Messaggi: 210
Iscritto: 10/06/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 21:23
Lunedì, 09/05/2011
Se è questo che vuoi sapere, ti rispondo: Ebbene no, il Timer non rallenta l'applicazione (a meno che non fai fare calcoli complessi ogni Tick), devi settare l'Interval, che in questo caso visto che non necessita di un Timing attento (come invece nei  giochi c'è per i movimenti fluidi, ti consiglio di vedere il mio PictureBall) può benissimo stare a 100. Pensa che una chat tipo usa 4 Timer per cose molto più complesse (potresti anche guardare la chat che ho fatto e allora vedi).

NB: Gradirei non ricevere critiche per il mio uso (e consiglio) del Timer, e il possibile uso alternativo del BackGroundWorker..

Ok grazie, l'avevo notato che non faceva rallentare un bel niente (l'interval mi basta anche di 200), però mi sembra un sistema veramente stupido che l'applicazione consumi la stessa percentuale di CPU sia che stia lavorando sia che sia ridotta a icona... Comunque, se è l'unico modo, grazie. - GN - 09/05/11 21:30
Potresti fare che se è ridotta a icona stoppi il timer, basta fare If Me.WindowState = FormWindowState.Minimized Then Timer1.Stop - R0gerBlack - 09/05/11 22:03


Volere è potere.

Se la conoscenza crea problemi, non è con l'ignoranza che si risolvono [Isaac Asimov]
PM