Problema con C# e disegno dei Panels

giovedì 22 marzo 2012 - 08.51

WinterMute Profilo | Newbie

Allora: sto creando un'applicazione grafica. Ho un panel dove creerò il mio disegno, all'interno di un tabControl
Ho tre funzioni: una che si occupa di creare una griglia nel panel, un'altra che ci disegna dentro gli oggetti, una terza che traccia un "mirino" della posizione del mouse in caso di MouseMove

Problema: quando creo il form e carico il panel, questo è del tutto inattivo (non ci viene disegnato nulla) fino a che non ci passo sopra col mouse. Questo è inaccettabile.
Ho provato a chiamare dinamicamente il mouseMove, a forzare il panel a mostrarsi ma è tutto inutile. Un paio di esperimenti (il classico messagebox) m hanno mostrato che nessun intervento sul panel avviene a meno che io non lo attivi manualmente, nonostante io chiami esplicitamente le funzioni che avvengono su di lui.

Come posso fare?

Da programmatore di PLC ero abituato al fatto che il flusso del programma fosse un dogma e non qualcosa che Windows si permette di modificare a piacimento...

u235 Profilo | Junior Member

>Allora: sto creando un'applicazione grafica. Ho un panel dove
>creerò il mio disegno, all'interno di un tabControl
>Ho tre funzioni: una che si occupa di creare una griglia nel
>panel, un'altra che ci disegna dentro gli oggetti, una terza
>che traccia un "mirino" della posizione del mouse in caso di
>MouseMove
>
>Problema: quando creo il form e carico il panel, questo è del
>tutto inattivo (non ci viene disegnato nulla) fino a che non
>ci passo sopra col mouse. Questo è inaccettabile.
>Ho provato a chiamare dinamicamente il mouseMove, a forzare il
>panel a mostrarsi ma è tutto inutile. Un paio di esperimenti
>(il classico messagebox) m hanno mostrato che nessun intervento
>sul panel avviene a meno che io non lo attivi manualmente, nonostante
>io chiami esplicitamente le funzioni che avvengono su di lui.
>
>Come posso fare?
>
>Da programmatore di PLC ero abituato al fatto che il flusso del
>programma fosse un dogma e non qualcosa che Windows si permette
>di modificare a piacimento...


Accidenti!! ancora una vittima dell'omino dispettoso della Microsoft
Scherzo!

Prova a postare il codice, se no non è possibile cercare di darti una mano.

WinterMute Profilo | Newbie

Ti ringrazio, ho risolto con un trucco: ho creato un timer che fa le operazioni che dovrebbero essere fatte dall'evento OnLoad.
OnLoad, per motivi che assolutamente mi sfuggono, viene eseguito solo in parte. Il timer viene eseguito, poi lo disabilito una volta che ha compiuto il suo dovere.

C# mi sembra un po' un cannone per mosche: anche per le cose più semplici richiede un lavoro ingiustificato... Vabbeh

u235 Profilo | Junior Member

>Ti ringrazio, ho risolto con un trucco: ho creato un timer che
>fa le operazioni che dovrebbero essere fatte dall'evento OnLoad.
>OnLoad, per motivi che assolutamente mi sfuggono, viene eseguito
>solo in parte. Il timer viene eseguito, poi lo disabilito una
>volta che ha compiuto il suo dovere.
>
>C# mi sembra un po' un cannone per mosche: anche per le cose
>più semplici richiede un lavoro ingiustificato... Vabbeh


:) sono contento che hai risolto, ma non credo che lo abbia fatto nel migliore dei modi.
Senza offesa si intenda, ma io non ho mai avuto bisogno di un timer per disegnare in un controllo, in nessuna condizione d'uso se non per specifici motivi logici che non hanno nulla a che vedere con problemi, quindi credo sia possibile che stia sbagliando qualcosa tu e non credo che sia c# a richiede un lavoro ingiustificato (questo).

Chiedevo il tuo codice perchè se avessi davvero bisogno di un timer in maniera ingiustificata, imparerei qualcosa (di brutto) in più del c#.

ciao.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5