Come allineare correttamente i controlli in uno StatusStrip?


93

Sto cercando di allineare a destra un controllo in un file StatusStrip. Come lo posso fare?

Non vedo una proprietà da impostare sui ToolStripItemcontrolli che specifica il loro allineamento fisico sul genitore StatusStrip.

Come faccio a far sì che i messaggi a discesa siano allineati correttamente? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90


4
Crea un elemento della barra degli strumenti dell'etichetta con la proprietà Spring impostata su true. Dettagli: dotnetperls.com/statusstrip (PS Sì, so che è una vecchia domanda.)
Nick Alexeev

Risposte:


228

L'ho trovato tramite i forum MSDN quasi immediatamente dopo la pubblicazione :)

È possibile utilizzare a ToolStripLabelper pseudo allineare i controlli a destra impostando la Textproprietà su string.Emptye impostando la Springproprietà su true. Questo farà sì che riempia tutto lo spazio disponibile e spinga tutti i controlli a destra ToolStripLabeldell'over.


28
Questo funziona solo se StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(che è quella predefinita)
AZ.

13
Bello. Un'etichetta StatusStripLabel con Spring su entrambi i lati sembra centrare i controlli
mcdon

Vorrei che ci fosse un modo "reale" per farlo, ma funziona quindi grazie. Mi chiedo cosa Alignmentfaccia la proprietà, perché non ha fatto nulla nella mia domanda.
TheGateKeeper

2
Mi chiedo quale sia la proprietà Alignment . Non vedo alcuna proprietà di questo tipo.
TaW

Ciò consentirà solo un elemento dopo l'etichetta con "Spring", gli altri non verranno visualizzati, utilizzare invece il metodo @VBobCat.
Pablo Carrasco Hernández

14

Per me ci sono voluti due semplici passaggi:

  1. Imposta MyRightIntendedToolStripItem.AlignmentsuRight
  2. Imposta MyStatusStrip.LayoutStylesuHorizontalStackWithOverflow

5

Come nota aggiuntiva, ciò è dovuto al fatto che nell'API Win32 una cella ha una larghezza fissa o riempie lo spazio rimanente -1

int statwidths[] = {100, -1};

SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)");

Se la memoria mi serve correttamente, puoi avere solo una cella di riempimento (-1) per barra di stato.

Puoi anche aggiungere una terza cella centrale e assegnarle la proprietà di riempimento per ottenere una barra di stato dall'aspetto più conciso. Coerente perché Messaggi ha un riquadro alla sua sinistra a destra dove ti aspetteresti. Un po 'come lo scatto mspaint trovato nella pagina MSDN per StatusBars

Mi piace l'appreach creativo però: D


Questo è valido per StatusBars, non per StatusStrips, che sono codice completamente gestito.
Filip Navara

3

È possibile visualizzare Buttonalla fine di StatusStriputilizzando la logica seguente.

  1. Aggiungere un ToolstripLabelalStatusStrip
  2. Imposta testo come string.Empty
  3. Impostato Paddingper ilToolstripLabel

Per esempio:

this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);

aggiungi una terza cella centrale e assegna a questa la proprietà di riempimento Non vedo alcuna proprietà di questo tipo.
TaW

2

Mantieni un'etichetta Toolstrip, imposta la proprietà Spring come true e per l'etichetta allinea il testo in BottomLeft


1

Ho scoperto che puoi impostare il layout StatusStrip su HorizontalStackWithOverflow. Quindi, per ogni controllo sullo StatusStrip che si desidera sul lato destro, impostare l'allineamento del controllo su Right.

Mi piace di più poiché non hai bisogno di controlli aggiuntivi o fittizi per l'allineamento.


-2

Trovo un modo generale per impostare la posizione di un controllo in StatusStrip. È possibile visualizzare il pulsante in qualsiasi posizione in StatusStriputilizzando i passaggi seguenti.

  1. Aggiungi un ToolstripLabel a StatusStrip
  2. Imposta il testo come una quantità di spazio adeguata come

    toolStripStatusLabel1.Text = "";

  3. Se il layout non è quello che vuoi, vai al passaggio 2 per modificare la quantità di spazio toolStripStatusLabel1.Text, altrimenti il ​​lavoro è stato fatto.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.