Làm cách nào để căn chỉnh đúng các điều khiển trong StatusStrip?


93

Tôi đang cố gắng căn chỉnh đúng điều khiển trong a StatusStrip. Làm thế nào tôi có thể làm điều đó?

Tôi không thấy thuộc tính nào để đặt trên các ToolStripItemđiều khiển chỉ định căn chỉnh vật lý của chúng trên cấp độ chính StatusStrip.

Làm cách nào để Tin nhắn thả xuống được căn đúng? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90


4
Tạo một mục trên thanh công cụ nhãn với thuộc tính Spring được đặt thành true. Chi tiết: dotnetperls.com/statusstrip (Tái bút Vâng, tôi biết rằng đó là một câu hỏi cũ.)
Nick Alexeev

Câu trả lời:


228

Tìm thấy nó qua các diễn đàn MSDN gần như ngay lập tức sau khi đăng :)

Bạn có thể sử dụng a ToolStripLabelđể giả các điều khiển căn phải bằng cách đặt thuộc Texttính thành string.Emptyvà đặt thuộc Springtính thành true. Điều này sẽ làm cho nó lấp đầy tất cả không gian có sẵn và đẩy tất cả các điều khiển sang bên phải ToolStripLabel.


28
Điều này sẽ CHỈ hoạt động nếu StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(là mặc định)
AZ.

13
Đẹp. Một StatusStripLabel với mùa xuân ở hai bên dường như tập trung các điều khiển
mcdon

Tôi ước có một cách "thực sự" để làm điều này, nhưng cách này hoạt động rất hiệu quả, cảm ơn. Tôi tự hỏi Alignmenttài sản đó làm gì, vì nó không làm gì trong ứng dụng của tôi.
TheGateKeeper

2
Mình thắc mắc cái tài sản Alignment gì mà không thấy tài sản nào như vậy.
TaW

Điều này sẽ chỉ cho phép một mục sau nhãn có "Spring", các mục khác sẽ không xuất hiện, hãy sử dụng phương thức @VBobCat để thay thế.
Pablo Carrasco Hernández

14

Đối với tôi, nó mất hai bước đơn giản:

  1. Đặt MyRightIntendedToolStripItem.AlignmentthànhRight
  2. Đặt MyStatusStrip.LayoutStylethànhHorizontalStackWithOverflow

5

Như một lưu ý thêm, điều này là do trong API Win32, một ô có chiều rộng cố định hoặc lấp đầy khoảng trống còn lại -1

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

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

Nếu bộ nhớ phục vụ tôi một cách chính xác, bạn chỉ có thể có một ô điền (-1) trên mỗi thanh trạng thái.

Bạn cũng có thể thêm một ô ở giữa thứ ba và cung cấp cho nó thuộc tính điền để có được StatusBar trông phù hợp hơn. Nhất quán vì Tin nhắn có phần chèn ở bên trái bên phải nơi bạn mong đợi. Một chút giống như ảnh chụp mspaint được tìm thấy trên trang MSDN dành cho Thanh trạng thái

Tôi thích cách tiếp cận sáng tạo mặc dù: D


Điều đó hợp lệ với Thanh trạng thái, không phải cho Thanh trạng thái, là mã được quản lý hoàn toàn.
Filip Navara

3

Bạn có thể hiển thị Buttonở cuối StatusStripbằng cách sử dụng logic bên dưới.

  1. Thêm a ToolstripLabelvàoStatusStrip
  2. Đặt văn bản là string.Empty
  3. Đặt PaddingchoToolstripLabel

Ví dụ:

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

thêm một ô ở giữa thứ ba và cung cấp cho nó thuộc tính điền vào. Tôi không thấy bất kỳ thuộc tính nào như vậy.
TaW

2

Giữ nhãn Toolstrip, đặt thuộc tính Spring là true và cho văn bản căn chỉnh nhãn trong BottomLeft


1

Tôi thấy rằng bạn có thể đặt Bố cục StatusStrip thành HorizontalStackWithOverflow. Sau đó, đối với mỗi điều khiển trên StatusStrip mà bạn muốn ở phía bên phải, hãy đặt Căn chỉnh điều khiển thành Phải.

Tôi thích điều này hơn vì bạn không cần bất kỳ điều khiển bổ sung hoặc giả nào để căn chỉnh.


-2

Tôi tìm một cách chung để đặt vị trí của điều khiển StatusStrip. Bạn có thể hiển thị Nút ở bất kỳ vị trí nào trong StatusStripbằng cách sử dụng các bước bên dưới.

  1. Thêm một ToolstripLabel vào StatusStrip
  2. Đặt văn bản dưới dạng một lượng không gian phù hợp như

    toolStripStatusLabel1.Text = "";

  3. Nếu bố cục không như bạn muốn, phải chuyển sang bước 2 để thay đổi lượng không gian trong đó toolStripStatusLabel1.Text, công việc khác đã được thực hiện.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.