2013-07-22 6 views
5

Quali sono le regole che devo rispettare per rendere il modulo scorrevole ...Modulo scorrevole in C#, AutoScroll = true non funziona

ho semplice impostare la proprietà AutoScroll su true. Ho anche provato mentre Auto Scroll è vero, per impostare AutoSize di vero/falso, ma nessuno di questi ha lavorato ... anche provato a mettere Panel e ha aggiunto tutti i componenti in là ... ancora niente ...

Forse usando V or HScrollBar può aiutare, ma io davvero non so come collegare con il modulo ...

form.AutoScroll = true; 
formMainLayout.AutoScroll = true; 
rootPanel.AutoScroll = true; 
+0

i controlli figlio nascondi dal modulo? –

+0

Come intendi i "controlli figlio" nascosti dalla forma? se si intende questo, la forma ha questo Controls.Add: rootPanel, rootPanel ha formMainLayout e formMainLayout ha tutti gli altri controlli – jovanMeshkov

+0

Voglio dire se la dimensione del modulo è (200.200). esiste uno dei controlli figlio esistenti oltre questo? (oltre 200.200) –

risposta

3

Il contenuto controlla lo scorrimento. Le barre di scorrimento non vengono visualizzate a meno che non siano necessarie. Di solito, è disponibile una proprietà che è possibile impostare per costringerli a essere sempre visibili e semplicemente disabilitati fino a quando necessario.

La proprietà AutoScroll deve essere true, come avete già trovato. Ma allora il contenuto del controllo scorrevole deve forzare il controllo genitore a visualizzare le barre di scorrimento. Questa parte dipende da come i controlli sono incorporati all'interno del genitore.

provare questi due esperimenti:

  1. Posizionare un Panel sul modulo e ancorarlo a Fill. Impostare la proprietà AutoScroll del pannello per true. In quel pannello, posizionare un TextBox e impostarlo di attraccare come Fill pure. Impostare anche MultiLine a true. Eseguire l'applicazione, e si noterà che la dimensione di entrambi è semplicemente utilizzando lo spazio disponibile ... non lo scorrimento può verificarsi perché né la Panel, né la sua TextBox diventano più grande dello spazio che occupano.

  2. Eseguire gli stessi passaggi del punto 1, ma questa volta non ancorare lo TextBox. Invece, impostarlo su una grande dimensione, qualcosa che si sa sarà più grande della quantità di Panel che è visibile. L'esecuzione dell'applicazione dovrebbe ora produrre uno scorrimento Panel.

Speriamo che questo piccolo test aiuti a dimostrare cosa controlla lo scorrimento su un modulo.

+0

Scusa ma non sono sicuro di cosa intendessi con "il modulo stesso non è un controllo scorrevole". Il modulo è scorrevole come qualsiasi altro controllo: condizioni di scorrimento automatico + soddisfatte (controlli contenuti al di fuori dei limiti) o vscrollbar/hscrollbar in esso. Inoltre, non sono troppo sicuro dell'effettiva/diretta applicabilità di ciò che dici per rispondere alla domanda "perché quando imposto AutoScroll su true non vedo la barra?". – varocarbas

+1

@varocarbas Il tuo punto è ben preso. Ho rimosso quella parte della mia risposta. Riguardo alla seconda parte del tuo commento, questa è la domanda che sto tentando di dimostrare una risposta a: "Quali sono le regole che devo rispettare per rendere scorrevole il modulo". – DonBoitnott

+0

Grazie. Tutto più chiaro ora. – varocarbas

0

la proprietà AutoScroll dovrebbe funzionare bene, ma molto probabilmente non lo si utilizza nel modo giusto: appare solo quando la barra necessario. Esempio: minimo Y del Form è 0 e Y minimo di uno dei controlli in esso (un TextBox) è -20.

Se si desidera includere una barra di scorrimento non importa quale (i controlli all'interno dei confini della forma o no), si può anche fare. Il codice di esempio (from MSDN) per una barra di scorrimento verticale:

// Create and initialize a VScrollBar. 
VScrollBar vScrollBar1 = new VScrollBar(); 

// Dock the scroll bar to the right side of the form. 
vScrollBar1.Dock = DockStyle.Right; 

// Add the scroll bar to the form. 
Controls.Add(vScrollBar1); 
3

Sono stato anche avendo lo stesso problema, sono riuscito a risolvere il problema ... Tutti i controlli figlio all'interno del pannello avevano un Sinistra & Destra ancora, e quando ho impostato solo l'ancora al top, il barre di scorrimento dove funziona bene.

non sono sicuro del perché il Sinistra e destro ancoraggio (dei controlli figlio) costringe il pannello di non mostrare le barre di scorrimento.

Ma comunque ... spero che questo possa aiutare chiunque a partire da questa data.

Problemi correlati