2012-11-18 2 views
5

Ho usato un controllo utente come classe base (chiamiamolo BaseUC) con 3 etichette (in 3 righe) su di esso (sono impostate come protette).Come modificare la posizione degli elementi ereditati in un controllo utente Ereditato

E c'è un altro controllo utente che ne eredita (InheritedUC). Ho aggiunto altre due etichette in InheritedUC, che sono posizionate tra le etichette della base (quindi ci sono 5 linee).

Tutto ciò che va bene è la vista dell'interfaccia utente di Visiual Studio. Ma quando eseguo l'applicazione, le etichette su BaseUC si sovrappongono a quelle di InheritedUC e non riesco a vedere quelle sul controllo ereditato.

Qualche idea per risolvere questo problema? La ringrazio molto

+0

È un problema di progettazione. Relativo al tuo html o CSS. Non è un problema di asp.net, C# o ereditarietà. –

+1

Potrebbe essere necessario impostare in modo esplicito le posizioni superiore e sinistra, è sufficiente controllare ciò che viene visualizzato/generato ora. Oppure usa una specie di proprietà pubblica calcolata nella tua classe base che la tua classe figlia può anche usare. – ryadavilli

+0

Grazie ryadavilli. Ho impostato esplicitamente le prime posizioni, nella classe ereditata. Ma stavo pensando se potessi in qualche modo evitare di farlo. – Yalda

risposta

1

Da MSDN: Control.Anchor Property

utilizzare la proprietà di ancoraggio per definire come un controllo è automaticamente ridimensionata come il suo controllo padre viene ridimensionato. L'ancoraggio di un controllo al relativo controllo genitore assicura che i bordi ancorati rimangano nella stessa posizione rispetto ai bordi del controllo padre quando il controllo padre viene ridimensionato.

È possibile ancorare un controllo a uno o più bordi del contenitore. Per esempio , se si dispone di un modulo con un pulsante il cui valore di proprietà di ancoraggio è impostato su Alto e Basso, il pulsante viene esteso per mantenere la distanza ancorata ai bordi superiore e inferiore del modulo come altezza del modulo è aumentato.

Impostare la proprietà Anchor su tutte le etichette: Per esempio:

label1.Anchor = AnchorStyles.Top | AnchorStyles.Left; 
1

Se mettete i controlli in un FlowLayoutPanel e impostare le seguenti opzioni:

AutoScroll = True 
FlowDirection = TopDown 
WrapContents = False 

allora si dovrebbe ottenere pannello che crescerà e si restringerà man mano che i controlli vengono aggiunti o rimossi.

Source