Salvataggio evento bottone

venerdì 09 gennaio 2009 - 10.37

toniovigi Profilo | Expert

Ciao ragazzi ,riprendendo questo thread http://www.dotnethell.it/forum/messages.aspx?ThreadID=27718

dove mi viene spiegato come serializzare una classe button che non è serializzabile,

volevo capire come in quel codice (struct) io oltre che salvare le proprietà rilevanti di un bottone possa anche salvare gli eventi

Grazie
Antonio

aiedail92 Profilo | Expert

Ciao

Cosa intendi con "salvare gli eventi"? Vuoi salvare quali sono le funzioni che gestiscono un determinato evento? Oppure vuoi registrare qualcosa (ad esempio l'ora e il tipo di evento) su un file quando l'evento viene scatenato?

Luca

toniovigi Profilo | Expert

Ciao Luca,

finalmente posso chiamarti per nome

tu nel codice che mi hai dato mi parlavi di proprietà rilevanti

e mi hai creato quel famoso "buttonInfo"

io vorrei anche poter salvare oltre Name,Text,bounds anche Color del bottone, tooltip ad esso associato, e qualche evento che associo al bottone

tipo ho l'evento click e l'evento mouseUp e vorrei salvarli in modo tale che quando Deserializzo possa ancora averli,sempre fruttando quella classe che mi hai passato tu che è veramente ottima!!

A gia che ci sono ti pongo un problema

public ButtonInfor(button from)
{ this.name=from.name:
this.text=from.text;
}
a volte mi da errore dicendo "Riferimento ad un oggetto non impostato ad un istanza..m parla di direttiva new e mi evidenzia this.name=from.name

motivo bho!

Grazie tante per il tuo aiuto!
Luca

aiedail92 Profilo | Expert

Alla struttura ButtonInfo puoi aggiungere tutti i dati che vuoi, quindi puoi espanderla con un

Color BackColor;

e aggiungere la copia del colore nel costruttore e nel codice di conversione, e uguale con le altre proprietà che ti servono.

Per quanto riguarda gli eventi, non penso proprio che si possano serializzare i metodi associati ad esso...

Invece l'errore che ti dà è dovuto al fatto che cerchi di assegnare un elemento null, non impostato, invece che un bottone allocato. Devi quindi prima creare il bottone con l'operatore new

Luca

toniovigi Profilo | Expert

Che brutta cosa che mi hai detto,dimmi che non è cosi:

miobottone.MouseDown += new MouseEventHandler(evento_MouseDown);
miobottone.MouseMove += new MouseEventHandler(evento_MouseMove);
miobottone.MouseUp += new MouseEventHandler(evento_MouseUp);


Al mio bottone ho associato queste 3 righe,praticamente servono per spostare e ridimensionare il bottone,solo che appunto quando serializzo io volevo poi riavere queste "righe"

E l'unica parte del programma che mi manca,che sfiga,non ci credo che non si può fare!!

CONFIDO NEI VOSTRI AIUTI!:)


Ho testato per quanto riguarda il colore ma non sono riuscito,ho modificato come segue :
public struct ButtonInfo
{
/// <summary>
/// Crea una struttura ButtonInfo a partire da un bottone, copiando le proprietà rilevanti
/// </summary>
public ButtonInfo(Button from)
{

this.Name = from.Name;
this.Text = from.Text;
this.Bounds = from.Bounds;
//Assegna le altre proprietà che intendi salvare
this.backcolor = from.BackColor;


}

/// <summary>
/// Conversione implicita da Button a ButtonInfo
/// </summary>
/// <remarks>Serve per poter scrivere buttonInfo = button;</remarks>
public static implicit operator ButtonInfo(Button from)
{
return new ButtonInfo(from);
}

/// <summary>
/// Conversione implicita da ButtonInfo a Button
/// </summary>
/// <remarks>Serve per poter scrivere button = buttonInfo;</remarks>
public static implicit operator Button(ButtonInfo from)
{
Button b = new Button();
b.Name = from.Name;
b.Text = from.Text;
b.Bounds = from.Bounds;
b.BackColor = from.backcolor;

//Assegna le altre proprietà che intendi salvare

return b;
}
//Nome del Button
public string Name;
//Testo del button
public string Text;
//Posizione e dimensioni del Button
public Rectangle Bounds;
//Aggiungi altre proprietà da serializzare
public System.Drawing.Color backcolor;

}
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5