Sto cercando di allineare a destra un controllo in un file StatusStrip
. Come lo posso fare?
Non vedo una proprietà da impostare sui ToolStripItem
controlli che specifica il loro allineamento fisico sul genitore StatusStrip
.
Sto cercando di allineare a destra un controllo in un file StatusStrip
. Come lo posso fare?
Non vedo una proprietà da impostare sui ToolStripItem
controlli che specifica il loro allineamento fisico sul genitore StatusStrip
.
Risposte:
L'ho trovato tramite i forum MSDN quasi immediatamente dopo la pubblicazione :)
È possibile utilizzare a ToolStripLabel
per pseudo allineare i controlli a destra impostando la Text
proprietà su string.Empty
e impostando la Spring
proprietà su true
. Questo farà sì che riempia tutto lo spazio disponibile e spinga tutti i controlli a destra ToolStripLabel
dell'over.
StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table
(che è quella predefinita)
Alignment
faccia la proprietà, perché non ha fatto nulla nella mia domanda.
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
È possibile visualizzare Button
alla fine di StatusStrip
utilizzando la logica seguente.
ToolstripLabel
alStatusStrip
string.Empty
Padding
per ilToolstripLabel
Per esempio:
this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
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.
Trovo un modo generale per impostare la posizione di un controllo in StatusStrip
. È possibile visualizzare il pulsante in qualsiasi posizione in StatusStrip
utilizzando i passaggi seguenti.
Imposta il testo come una quantità di spazio adeguata come
toolStripStatusLabel1.Text = "";
Se il layout non è quello che vuoi, vai al passaggio 2 per modificare la quantità di spazio toolStripStatusLabel1.Text
, altrimenti il lavoro è stato fatto.
Impostare la proprietà della striscia degli strumenti RightToLeft su True.