PDA

View Full Version : [C#]"estrarre" una classe da una funzione...


RaouL_BennetH
24-01-2007, 15:46
Perdonatemi per il titolo poco esplicativo, ma forse se vi faccio l'esempio è meglio:



//codice a livello di form

ToolsStripControlHost dateTimePickerHost;

dateTimePickerHost = new ToolStripControlHost(new DateTimePicker());
dateTimePickerHost.Font = new Font("Arial", 7.0F, FontStyle.Bold);
dateTimePickerHost.Width = 100;
((DateTimePicker)dateTimePickerHost.Control).Format = DateTimePickerFormat.Custom;
((DateTimePicker)dateTimePickerHost.Control).CustomFormat = "MMM yyyy";
toolStrip1.Items.Add(dateTimePickerHost);


Il fatto è che avendo numerosi forms dove devo fare la stessa cosa, volevo creare una classe pubblica (sforzandomi sempre con maggior impegno a cercare di imparare e rispettare i paradigmi della programmazione ad oggetti).

Mi mettereste sulla retta via?

Grazie :)

RaouL.

Einstein
24-01-2007, 15:51
Io farei una form base per tutte le forms della tua applicazione. In questa form "base" definisci protected i suoi membri, e le form dell'applicazione erediteranno da questa form invece che da System.Windows.Forms.Form.
Tra l'altro visual Studio ti permette in modo visuale di creare una nuova form basandola su una form già esistente (New... Inherited Form).

Ciao

RaouL_BennetH
24-01-2007, 16:05
Io farei una form base per tutte le forms della tua applicazione. In questa form "base" definisci protected i suoi membri, e le form dell'applicazione erediteranno da questa form invece che da System.Windows.Forms.Form.
Tra l'altro visual Studio ti permette in modo visuale di creare una nuova form basandola su una form già esistente (New... Inherited Form).

Ciao

Grazie per la risposta innanzitutto.

Il fatto è che vorrei farlo senza utilizzare visual studio, anche perchè sto usando monodevelop, ma, a prescindere da questo, mi serve per imparare più che altro a pensare "senza troppe comodità" :)

Ho fatto una cosa del genere:


public class ManageCalendar
{

private ToolStripControlHost dateTimePickerHost;


public ToolStripControlHost ReturnDate()
{

dateTimePickerHost = new ToolStripControlHost(new DateTimePicker());
dateTimePickerHost.Font = new Font("Arial", 7.0F, FontStyle.Bold);
dateTimePickerHost.Width = 100;
((DateTimePicker)dateTimePickerHost.Control).Format = DateTimePickerFormat.Custom;
((DateTimePicker)dateTimePickerHost.Control).CustomFormat = "MMM yyyy";
return dateTimePickerHost;



}
}


e poi nel o nei form:



ManageCalendar mc = new ManageCalendar();

toolstrip1.Items.Add(mc.ReturnDate());



Questo mi funziona, ma voi mi insegnate che "funziona" non sempre è sinonimo di correttezza.

Grazie :)

RaouL.