Sto facendo alcuni controlli che devono tutti condividere lo stesso aspetto e alcuni comportamenti comuni, sebbene siano pensati per diversi tipi di input. Così ho creato una BaseClass che eredita da UserControl e tutti i miei controlli ereditano da BaseClass.Come accedere ai controlli ereditati nel designer winforms
Tuttavia, se aggiungo controlli per BaseClass nella finestra di progettazione, ad esempio TableLayoutPanel, non riesco ad accedervi quando sto progettando le classi ereditate. Vedo il TableLayoutPanel, ma anche se è "protetto", non posso modificarlo o inserire controlli attraverso il designer. Non ho problemi ad accedervi per codice, ma non voglio perdere la possibilità di usare il designer.
Al momento, ho semplicemente rimosso tutti i controlli da BaseClass, aggiunto il layout e tutti i controlli comuni in ciascuna classe ereditata, quindi uso i riferimenti per manipolarli all'interno di BaseClass. Ma questo non mi soddisfa affatto. C'è un modo per far funzionare il designer con i controlli dei membri protetti ereditati?
Ambiente: C#, .NET 3.5, Visual Studio 2008
EDIT per rispondere suggerimento di SLaks. Ho provato a impostare una proprietà, e anche se non sono abituato a usarli, non sembra funzionare. Ecco il codice che ho provato:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public TableLayoutPanel TableLayoutPanel1
{
get { return tableLayoutPanel1;}
set { tableLayoutPanel1 = value;}
}
}
public partial class UserControl2 : UserControl1
{
public UserControl2()
{
InitializeComponent();
}
}
Sarebbe possibile ereditare da TableLayoutPanel stesso? – SLaks
Certo, puoi sempre creare il tuo controllo ereditato dal controllo di winforms. L'ho fatto per implementare alcuni controlli. Ma non è quello che sto cercando di ottenere qui. Sto cercando di avere un controllo con diversi controlli di base all'interno: un tablelayoutpanel, con alcuni controlli (come un'etichetta) e diversi spazi vuoti che le classi ereditate dovrebbero riempire con i controlli di loro scelta. L'obiettivo finale è di aggiungere tutti questi controlli alla casella degli strumenti e quindi di drapparli e rilasciarli nella finestra di progettazione per creare moduli con molti controlli ma con un comportamento/layout comune su questi controlli. – Ksempac
E btw, l'ereditare da un controllo Winform taglierà il progettista, poiché di solito il punto è solo quello di implementare un comportamento specifico, non ridisegnare il controllo da soli. – Ksempac