Quindi ho 3 contenitori divisi, con 2 pannelli ciascuno.Nested SplitContainers bug the SplitterWidth
SplitContainer1
è il contenitore principale ancorato nel modulo (padre).
SplitContainer1.Panel1
contiene SplitContainer2
che è ancorato.
SplitContainer1.Panel2
contiene SpliContainer3
che è ancorato.
Fin qui tutto bene.
SplitContainer1
ha una SplitterWidth
di 3. SplitContainer2
e SplitContainer3
ha un SplitterWidth
di 6.
Nella finestra di progettazione, si può vedere la differenza SplitterWidth
tra di loro, ma quando ho costruire la soluzione, la SplitterWidth
di SplitContainer2
e SplitContainer3
viene reimpostato su 4 indipendentemente da ciò che faccio. Ho modificato il codice in "InitializeComponent" del modulo senza alcun effetto.
L'unico modo in cui ho ottenuto questo funzionamento è nello Load Event
del modulo, specificare nuovamente il SplitterWidths
che trovo completamente stupido. Perché lo SplitterWidths
non si posizionerà al valore specificato in Designer?
Se qualcuno può far luce su questo, cosa sarebbe fantastico !!
Grazie per il vostro tempo,
Peter
Sono stato in grado di riprodurre il problema sulla mia estremità. Ovviamente non dovrebbe funzionare in questo modo. Sembra un bug nel modo in cui la proprietà ambient di SplitContainer1 viene copiata negli altri due? Poiché si tratta di un bug, non c'è soluzione alternativa tranne l'approccio "stupido" che hai già capito. Scusa amico. –
Sì, questo è un bug. Una sfortunata interazione tra l'implementazione ISupportInitialize utilizzata da SplitContainer, che ritarda l'assegnazione delle proprietà effettive. E il calcolo del layout per il pannello, che impone la larghezza dello splitter da assegnare. Con il suo vecchio valore, non il nuovo valore in sospeso. La soluzione alternativa è abbastanza semplice, basta assegnare le proprietà nel costruttore del modulo, dopo la chiamata InitializeComponent(). –
@HansPassant - Hans, in base alla tua esperienza, pensi che questi bug abbiano qualche possibilità di essere risolti? Ho presentato [simile] (https://connect.microsoft.com/VisualStudio/feedback/details/796965/menustrip-right-left-arrow-keys-work-reversely-when-a-submenu-is-open-dropped -down) ed è stato rifiutato. I ragazzi di .NET generalmente hanno paura di rompere la compatibilità con queste correzioni? Devo continuare a segnalarli o devo rinunciarvi? – miroxlav