my.ASPItalia.com
ASP.NET
|
HTML5
|
LINQ e Entity Framework
|
Silverlight
|
Windows Phone
|
.NET Framework
|
Windows 8
|
Libro WP7
|
Libro HTML5
|
Corso HTML5
Iscriviti
Login
Newsletter
Home
Articoli
Script
Notizie
FORUM
Blogs
Media
Tutorials
Corsi
Libri
Eventi
Tags
Tutti i forum
Ricerca
FAQ
Fai una domanda
Uso di Graphics con Controllo utente
in
.NET Framework
>
Windows Presentation Foundation e WinForms
Ultimo messaggio
baltica
il 13 novembre 2006 alle 11:02
42 messaggi
dal 08 febbraio 2002
Ciao a tutti,
Sto creando un programma che contiene un calendario mensile e, siccome il rollover sulle caselle che identificano un giorno, provoca un brutto effetto per il quale si vedono i contorni delle label del nome del giorno della settimana (lunedi, martedi ecc...) e del giorno del mese, avevo deciso di crearmi un' immagine "ad hoc" per ogni giorno, usando la libreria System.Drawing renderizzando sull' immagine di background queste due informazioni. Ho provato con :
private void CalendarDay_Load(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
Font f = new Font("Verdana",10, FontStyle.Italic);
g.DrawString("lunedi",f,Brushes.Black,10,10);
g.Dispose();
}
ma non ha causato nessun effetto di sorta. Ho provato a mettere questo codice anche nel costruttore ma non è cambiato niente. L' unica volta che sono riuscito a scrivere qualcosa è stato mettendo il codice nell' handler di un pulsante (quindi quando il controllo è stato gia caricato). A me però servirebbe inizializzare il controllo con quei valori. C'è un particolare evento che posso utilizzare o sto sbagliando qualcosa ?
Grazie in anticipo
Rispondi
Quoting
laurar81
il 13 novembre 2006 alle 13:14
194 messaggi
dal 13 dicembre 2005
A quanto vedo hai messo il codice nel load mentre, secondo me dovresti metterlo nel momento in cui viene disegnato il form; credo Paint....
non ne sono sicura ma prova...
Rispondi
Quoting
baltica
il 13 novembre 2006 alle 14:39
42 messaggi
dal 08 febbraio 2002
Grazie ! Adesso funziona perfettamente ...
Ciao
Rispondi
Quoting
baltica
il 14 novembre 2006 alle 17:55
42 messaggi
dal 08 febbraio 2002
Scusate ma ho avuto un'altra "anomalìa" nello sviluppare il controllo:
Ho un costruttore del controllo "ListHeader" che accetta una stringa e la mette nella proprietà "HeadTitle". Dalla form principale richiamo :
private void DisposeFile()
{
this.pnlCalendar.Controls.Clear();
this.PnlDetail.Controls.Clear();
this.Head = new ListHeader(PerDiemCollection.MonthName + ", " + PerDiemCollection.DYear.ToString());
....
}
public ListHeader(string Header)
{
InitializeComponent();
this.HeadTitle = Header;
}
HeadTitle sarà poi visualizzato sul controllo tramite l'handler:
private void ListHeader_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.CreateGraphics();
Brush b = new LinearGradientBrush(this.ClientRectangle, Color.Lavender, Color.Gray, 90);
g.FillRectangle(b, this.ClientRectangle);
// QUI SCRIVO IL TESTO INCRIMINATO
g.DrawString(this.HeadTitle, new Font("Verdana", 20), Brushes.Black, 0, 0);
g.Dispose();
}
Ma quando debuggo mi sono accorto che la proprietà HeadTitle viene valorizzata correttamente quando esco dalla DisposeFile(), ma nel momento in cui arrivo all'handler ListHeader_Paint essa assume il valore di stringa vuota (!?). Mi sono perso qualcosa ?
Rispondi
Quoting
laurar81
il 15 novembre 2006 alle 09:48
194 messaggi
dal 13 dicembre 2005
Dovresti mettere dei punti di interruzione in tutte e 3 le funzioni in quanto se il sistema passa prima per Paint la variabile non viene inizializzata poichè viene valorizzata nella ListHeader richiamata dalla DisposeFile.
L'evento Paint viene richiamato ogni qual volta deve essere ridisegnato il form e anche in altre occasioni che non vediamo.
Quello che ti posso consigliare è studiare bene (anche nella guida MSDN) il comportamento di questi eventi altrimenti non ne esci fuori poichè ogni volta che aggiungerai un controllo potresti avere degli effetti collaterali.
Ciao
Laura
Rispondi
Quoting
baltica
il 16 novembre 2006 alle 11:09
42 messaggi
dal 08 febbraio 2002
Grazie, ho risolto il problema inserendo il mio UserControl all'interno di un panel.
Adesso non ha più problemi di refresh ... Infatti prima il titolo compariva nel momento che scattava ancora l' evento paint, anche semplicemente passando con una popup sul controllo.
Rispondi
Quoting
Salto rapido
Ultimi messaggi
Tutti i forum
Ricerca
Utenti online
ASP.NET
ASP.NET 2.0
ASP.NET 3.5
ASP.NET 4.0
.NET Framework
Silverlight
Windows Phone
Windows Presentation Foundation e WinForms
Windows Communication e Workflow
ASP - avanzato
ASP - base
SQL Server e MySQL
E-commerce
Hosting
Altri linguaggi e tecnologie
Windows Server, IIS & Security
Libri
OT
Commenti: blogs e notizie
Eventi
Torna al forum
| Feed
RSS
ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Effettua il login!
Hai dimenticato la password?
Ultimi messaggi
Ordinamento Colonne Datagridview
(2)
metodo process per stampare più copie.
(2)
Attivare una PageFunction
(1)
UTENTI ONLINE
In primo piano
Annunciate le versioni ufficiali di Visual Studio 11
Rilasciato Visual Studio 11 Beta: scopri tutte le novità!
Windows 8 Consumer Preview: segui con noi la diretta
I più letti di oggi
Mobile Web con HTML5 e jQuery Mobile (Community Days 2012)
Annunciate le versioni ufficiali di Visual Studio 11
Internet Explorer 10 Platform Preview 1 (IE10 PP1)
Web Camp - HTML5 per il web di oggi (Community Days 2012)
Tutorial ASP.NET
Media
Metro Style App per Windows 8 con HTML e Javascript
Applicazioni Metro con XAML: cosa cambia per lo sviluppatore .NET con Windows 8
Tutti i media
In evidenza
Dal 29 febbraio arriva WinRTItalia.com: tutto sullo sviluppo per Windows 8 e Metro
Salvare e leggere rapidamente le impostazioni di un'applicazione Windows Phone
Metro Style App per Windows 8 con HTML e Javascript
Aggiungere un handler globale per le chiamate AJAX di ASP.NET MVC
Annunciate le versioni ufficiali di Visual Studio 11
Applicazioni Metro con XAML: cosa cambia per lo sviluppatore .NET con Windows 8
Utilizzare AppFabric con Windows Azure
Windows 8: introduzione allo sviluppo
MISC
I nostri autori
Collabora con noi!
Media Kit - Pubblicità sul nostro network