Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

The Properties Window is used to show not only properties but also the events that the form receives

Incuriosito da questa frase scritta da Lorenzo "Guru" Barbieri (chi è? mi pare di conoscerlo...), ho aperto il mio Visual Studio .NET 2003 per controllare di persona. In pratica, si parla della Property Window (PW) di Visual Studio. Se non sapete cos'è la PW, date un'occhiata alla barra Address o Indirizzo del vostro browser: cliccateci dentro, scrivete www.topolino.it e cliccate sul pulsante Go o Vai. Torniamo a noi, in pratica si dice che la PW non serve solamente ad elencare la proprietà di un controllo, ma anche ad elencare gli eventi che il controllo può gestire.

Andiamo con calma, perchè questa cosa non l'ho mai vista...apro VS2003, inizio un nuovo progetto Windows Application in C# ed ecco che mi appare un Windows Form sullo schermo. Richiamo la PW, clicco sul pulsante Events ed effettivamente ecco la lista degli eventi. Incredibile, non l'avevo mai vista!!!
Non solo: come succedeva con Access 2.0 (e via via con gli altri Access successivi), ad ogni evento posso associare la function che voglio, semplicemente "pescandola" dalla combobox nella PW.

Andiamo avanti. Faccio doppio-click sul form e per default mi viene creata la Form1_Load. Nella PW vedo effettivamente che all'evento Load è stata associata la function Form1_Load(). Mi chiedo chi popola le combobox della PW nella sezione Events, e soprattutto come. Apro il codice, e modifico/aggiungo fino ad avere quanto segue:

 private void Form1_Load(object sender, System.EventArgs e)
 {
  // aggiungo questa linea
  this.Text = "Form1_Load";
 }

 // scrivo questa routine
 private void FormLoadScrittoaMano()
 {
  this.Text = "FormLoadScrittoaMano";
 }
 
La prima, Form1_Load, è quella predefinita. La seconda, FormLoadScrittoaMano, l'ho scritta a mano. Che fatica mettere i ";" alla fine di ogni riga!! :-)
Vado nella PW e nella combobox la mia function non appare. Perchè? Penso subito che possa dipendere dalla firma: la Form1_Load originale ha due parametri: sender ed e, che nella mia FormLoadScrittoaMano() non ho. Li aggiungo velocemente alla mia, che così diventa:

 private void FormLoadScrittoaMano(object sender, System.EventArgs e)
 {
  this.Text = "FormLoadScrittoaMano";
 }
 
Adesso nella PW, sezione Events, riga Load, nella combobox appaiono correttamente due function: la Form1_Load() e la FormLoadScrittoaMano(). Ma la cosa interessante è questa: proviamo ad aggiungere queste righe di codice:

 protected virtual void Pippo(object sender, PaintEventArgs e) { }
 
Questa è una semplice function Pippo. Proviamo ad aprire la PW, sezione Events, e apriamo la combobox relativa all'evento Paint: ecco che appare la nostra Pippo. Proviamo ad aprire le combobox degli altri eventi: la nostra function Pippo non compare. Perchè? Semplice: perchè la firma della nostra function fa capire all'IDE che si tratta di una function adatta a gestire l'evento Paint del Windows Form, ma inadatta per tutti gli altri eventi.

Quindi, morale: non solo PW gestisce proprietà ed eventi, ma in quest'ultimo caso aiuta lo sviluppatore con combobox intelligenti, sensibili al contesto, alla sintassi, alla firma delle function che lo sviluppatore scrive, impedendo di fatto che un qualsiasi evento venga gestito da una function "inadatta". Forte!

Visual Studio Property Window, voto 10!!!

Print | posted on giovedì 30 giugno 2005 20:35 |

Feedback

Gravatar

# re: The Properties Window is used to show not only properties but also the events that the form receives

Non solo: se fai doppio click sull'evento dal PW, VS genera automaticamente la definizione del metodo...
30/06/2005 20:42 | Alessandro Petrozzelli
Gravatar

# re: The Properties Window is used to show not only properties but also the events that the form receives

sì, vero, ho visto anche questo. anche se devo dire che trovo più comodo VB.NET in questo senso. quando ho il codice davanti, basta selezionare il controllo nella combobox di sinistra, e quella di destra viene popolata con tutti gli eventi di quel controllo. In C# questo non funziona, non ho capito perchè!
30/06/2005 20:47 | Igor Damiani
Gravatar

# re: The Properties Window is used to show not only properties but also the events that the form receives

anche in VB.NET c'è il metodo InitializeComponent, e viene usato il metodo .AddHandler per assegnare ad ogni evento il suo gestore! perciò C# e VB.NET fanno la stessa cosa, è diverso solo il comportamento dell'IDE...
30/06/2005 22:36 | Igor Damiani
Gravatar

# [MCAD] Creare, implementare a gestire gli eventi (2)

06/07/2005 14:29 | Technology Experience
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET