ฉันจะจัดแนวการควบคุมใน StatusStrip ให้ถูกต้องได้อย่างไร


94

ฉันกำลังพยายามจัดแนวการควบคุมในไฟล์StatusStrip. ฉันจะทำเช่นนั้นได้อย่างไร?

ฉันไม่เห็นคุณสมบัติที่จะตั้งค่าบนToolStripItemตัวควบคุมที่ระบุการจัดตำแหน่งทางกายภาพบนพาเรนStatusStripต์

ฉันจะทำให้ข้อความแบบเลื่อนลงจัดวางถูกต้องได้อย่างไร http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90


4
สร้างรายการแถบเครื่องมือเลเบลโดยตั้งค่าคุณสมบัติ Spring เป็น true รายละเอียด: dotnetperls.com/statusstrip (ปล. ใช่ฉันรู้ว่ามันเป็นคำถามเก่า)
Nick Alexeev

คำตอบ:


233

พบผ่านฟอรัม MSDN เกือบจะทันทีหลังจากโพสต์ :)

คุณสามารถใช้ToolStripLabelเพื่อหลอกควบคุมชิดขวาโดยการตั้งค่าTextคุณสมบัติการstring.Emptyและการตั้งค่าคุณสมบัติการSpring trueสิ่งนี้จะทำให้เต็มพื้นที่ว่างทั้งหมดและดันตัวควบคุมทั้งหมดไปทางขวาของToolStripLabelโอเวอร์


28
สิ่งนี้จะใช้ได้เฉพาะในกรณีที่StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(ซึ่งเป็นค่าเริ่มต้น)
AZ

14
ดี. StatusStripLabel พร้อมสปริงที่ด้านใดด้านหนึ่งดูเหมือนจะอยู่ตรงกลางตัวควบคุม
mcdon

ฉันหวังว่าจะมีวิธีที่ "จริง" ในการทำเช่นนี้ แต่ได้ผลดีมาก ฉันสงสัยว่าAlignmentทรัพย์สินทำอะไรเพราะมันไม่ได้ทำอะไรเลยในใบสมัครของฉัน
TheGateKeeper

2
ฉันสงสัยว่าคุณสมบัติ Alignment คืออะไรฉันไม่เห็นคุณสมบัติดังกล่าว
TaW

การดำเนินการนี้จะอนุญาตเพียงรายการเดียวหลังจากป้ายกำกับที่มี "Spring" ส่วนรายการอื่น ๆ จะไม่ปรากฏให้ใช้วิธีการ @VBobCat แทน
Pablo Carrasco Hernández

16

สำหรับฉันใช้สองขั้นตอนง่ายๆ:

  1. ตั้งค่าMyRightIntendedToolStripItem.Alignmentเป็นRight
  2. ตั้งค่าMyStatusStrip.LayoutStyleเป็นHorizontalStackWithOverflow

5

ตามหมายเหตุเพิ่มเติมนี้เกิดจากข้อเท็จจริงที่ว่าใน Win32 API เซลล์มีความกว้างคงที่หรือเติมช่องว่างที่เหลือ -1

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

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

หากหน่วยความจำให้บริการฉันอย่างถูกต้องคุณสามารถมีเซลล์เติมได้เพียงหนึ่งเซลล์ (-1) ต่อแถบสถานะ

คุณยังสามารถเพิ่มเซลล์ตรงกลางที่สามและให้คุณสมบัตินี้เพื่อให้ได้ StatusBar ที่ดูสอดคล้องกันมากขึ้น สอดคล้องกันเนื่องจาก Messages มีสิ่งที่ใส่เข้าไปทางด้านซ้ายซึ่งคุณคาดหวังได้ คล้ายกับภาพ mspaint ที่พบในหน้า MSDN สำหรับ StatusBars

ฉันชอบความคิดสร้างสรรค์แม้ว่า: D


ใช้ได้กับ StatusBars ไม่ใช่สำหรับ StatusStrips ซึ่งเป็นโค้ดที่มีการจัดการโดยสมบูรณ์
Filip Navara

3

คุณสามารถแสดงต่อButtonท้ายStatusStripโดยใช้ตรรกะด้านล่าง

  1. เพิ่มToolstripLabelไฟล์StatusStrip
  2. ตั้งค่าข้อความเป็น string.Empty
  3. ตั้งค่าPaddingสำหรับไฟล์ToolstripLabel

ตัวอย่างเช่น:

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

เพิ่มเซลล์กลางที่สามและให้คุณสมบัติเติมนี้ ฉันไม่เห็นคุณสมบัติดังกล่าว
TaW

2

เก็บป้ายชื่อ Toolstrip ตั้งค่าคุณสมบัติ Spring เป็นจริงและสำหรับการจัดแนวป้ายข้อความใน BottomLeft


1

ฉันพบว่าคุณสามารถตั้งค่า StatusStrip Layout เป็น HorizontalStackWithOverflow จากนั้นสำหรับแต่ละตัวควบคุมบน StatusStrip ที่คุณต้องการทางด้านขวาให้ตั้งค่าการจัดแนวควบคุมไปทางขวา

ฉันชอบสิ่งนี้ดีกว่าเนื่องจากคุณไม่ต้องการการควบคุมเพิ่มเติมหรือหลอกเพื่อจัดแนว


0

หากคุณตั้งค่าคุณสมบัติ Spring ของตัวควบคุมแถบสถานะเป็นจริงป้ายกำกับนั้นจะใช้พื้นที่ว่างที่ไม่ได้ใช้โดยคอนโทรลอื่นใน StatusStrip


คำตอบนี้ได้รับแล้ว เมื่อตอบคำถามเก่า ๆ ที่มีคำตอบมากมายคุณต้องตรวจสอบก่อน
marsh-wiggle

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.