Wie richte ich Steuerelemente in einem StatusStrip richtig aus?

93

Ich versuche, ein Steuerelement in a richtig auszurichten StatusStrip. Wie kann ich das machen?

Ich sehe keine Eigenschaft zum Festlegen von ToolStripItemSteuerelementen, die deren physische Ausrichtung auf dem übergeordneten Element angibt StatusStrip.

Wie kann ich erreichen, dass Nachrichten nach unten ausgerichtet werden? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90

Eric Schoonover
quelle
4
Erstellen Sie ein Beschriftungssymbolleistenelement mit der Spring-Eigenschaft auf true. Details: dotnetperls.com/statusstrip (PS Ja, ich weiß, dass es eine alte Frage ist.)
Nick Alexeev

Antworten:

228

Fand es über MSDN-Foren fast unmittelbar nach dem Posten :)

Sie können ToolStripLabelSteuerelemente zum Pseudo-Rechtsausrichten verwenden, indem Sie die TextEigenschaft auf string.Emptyund die SpringEigenschaft auf festlegen true. Dadurch wird der gesamte verfügbare Speicherplatz ausgefüllt und alle Steuerelemente rechts vom ToolStripLabelOver gedrückt.

Eric Schoonover
quelle
28
Dies funktioniert NUR, wenn StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(dies ist die Standardeinstellung)
AZ.
13
Nett. Ein StatusStripLabel mit Feder auf beiden Seiten scheint die Steuerelemente zu
zentrieren
Ich wünschte, es gäbe einen "echten" Weg, dies zu tun, aber das funktioniert so, danke. Ich frage mich, was die AlignmentImmobilie macht, weil sie in meiner Bewerbung nichts bewirkt hat.
TheGateKeeper
2
Ich frage mich, was die Alignment-Eigenschaft bewirkt. Ich sehe keine solche Eigenschaft.
TaW
Dadurch wird nur ein Element nach dem Etikett mit "Spring" zugelassen, die anderen werden nicht angezeigt. Verwenden Sie stattdessen die @ VBobCat-Methode.
Pablo Carrasco Hernández
14

Für mich waren es zwei einfache Schritte:

  1. Set MyRightIntendedToolStripItem.AlignmentzuRight
  2. Set MyStatusStrip.LayoutStylezuHorizontalStackWithOverflow
VBobCat
quelle
5

Als zusätzliche Anmerkung ist dies auf die Tatsache zurückzuführen, dass in der Win32-API eine Zelle entweder eine feste Breite hat oder den verbleibenden Raum -1 ausfüllt

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

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

Wenn der Speicher mir richtig dient, können Sie nur eine Füllzelle (-1) pro Statusleiste haben.

Sie können auch eine dritte mittlere Zelle hinzufügen und dieser die Fill-Eigenschaft zuweisen, um eine konsistentere Statusleiste zu erhalten. Konsistent, da Nachrichten links rechts dort eingesetzt sind, wo Sie es erwarten würden. Ein bisschen wie die mspaint-Aufnahme auf der MSDN-Seite für StatusBars

Ich mag den kreativen Appeal: D.

Martijn Laarman
quelle
Dies gilt für StatusBars, nicht für StatusStrips, bei denen es sich um vollständig verwalteten Code handelt.
Filip Navara
3

Sie können das Buttonam Ende des StatusStripmit der folgenden Logik anzeigen .

  1. Fügen Sie ein ToolstripLabelzum hinzuStatusStrip
  2. Stellen Sie den Text als ein string.Empty
  3. Stellen Sie Paddingfür dieToolstripLabel

Beispielsweise:

this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
Chandran R.
quelle
Fügen Sie eine dritte mittlere Zelle hinzu und geben Sie dieser die Fill-Eigenschaft. Ich sehe keine solche Eigenschaft.
TaW
2

Behalten Sie eine Toolstrip-Beschriftung bei, setzen Sie die Spring-Eigenschaft auf true und richten Sie den Text für Beschriftungen in BottomLeft aus

Visakh VA
quelle
1

Ich habe festgestellt, dass Sie das StatusStrip-Layout auf HorizontalStackWithOverflow setzen können. Setzen Sie dann für jedes Steuerelement auf dem StatusStrip, das Sie auf der rechten Seite möchten, die Steuerelementausrichtung auf Rechts.

Ich mag das besser, da Sie keine zusätzlichen oder Dummy-Steuerelemente zum Ausrichten benötigen.

Rittergambit
quelle
-2

Ich finde einen allgemeinen Weg, um die Position eines Steuerelements festzulegen StatusStrip. Sie können die Schaltfläche an einer beliebigen Position in anzeigen, StatusStripindem Sie die folgenden Schritte ausführen.

  1. Fügen Sie dem StatusStrip ein ToolstripLabel hinzu
  2. Stellen Sie Text als geeigneten Platz ein

    toolStripStatusLabel1.Text = "";

  3. Wenn das Layout nicht Ihren Wünschen entspricht, müssen Sie Schritt 2 ausführen, um den Speicherplatz zu ändern. toolStripStatusLabel1.TextAndernfalls wurde gearbeitet.

Alan Ackart
quelle
-2

Setzen Sie die RightToLeft-Tool-Strip-Eigenschaft auf True.

TravisHendrickson
quelle