2010-04-15 23 views
16

Tôi có một StatusStrip với một ToolStripStatusLabel, Spring = true và màu nền cho thông báo.Làm cách nào để lấy lại không gian từ "Grip"

Vấn đề là có một hình vuông màu xám xấu xí ở bên phải dải trạng thái. Sau khi không quan sát được một lúc, tôi nhận ra đây là cái kẹp định cỡ (tôi đã đặt thành SizingGrip = false, GripStyle = Hidden). Tuy nhiên, ngay cả với nó ẩn, nó vẫn còn hogs không gian. Tôi không thể nhận được bất kỳ nội dung nào trên dải trạng thái để mở rộng tất cả các con đường sang phải.

Bạn sẽ giải quyết vấn đề này bằng cách nào? Lưu ý Tôi không thể chỉ thiết lập backcolor của StatusStrip vì Label Status thay đổi màu sắc và có một số hiệu ứng mờ dần.

Trả lời

26

Thuộc tính StatusStrip.Padding được borked, nó trả về giá trị sai cho Padding.Right nếu sizing grip bị tắt. Bạn có thể sửa chữa nó trong nhà xây dựng biểu mẫu của bạn, như thế này:

public Form1() { 
    InitializeComponent(); 
    statusStrip1.Padding = new Padding(statusStrip1.Padding.Left, 
    statusStrip1.Padding.Top, statusStrip1.Padding.Left, statusStrip1.Padding.Bottom); 
} 

Sử dụng thuộc tính Trái để chỉ định Phải sửa lỗi. Đừng bận tâm gửi lỗi này cho Connect, họ sẽ không sửa lỗi đó.

1

Hãy xem this blog entry on MSDN. Câu hỏi đặt ra là thay đổi kích thước của tay cầm kích thước bằng tay, và tôi nghĩ rằng bằng cách sử dụng ToolStrip Renderer như đề xuất có thể làm việc cho bạn cũng có.

Vấn đề tôi có cho đến nay, là nó loại bỏ màu nền trên nhãn trạng thái trong StatusStrip, do đó, nó không phải là một giải pháp nào được nêu ra, nhưng đó là một sự khởi đầu.

public MyForm() 
    { 
     InitializeComponent(); 
     statusStrip1.Renderer = new MyRenderer(); 
    } 

    private class MyRenderer : ToolStripProfessionalRenderer 
    { 
     protected override void OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs e) 
     { 
      // don't draw at all 
     } 
    } 
0

Tôi gặp vấn đề sau: khi tôi đặt tsslSeparator.Spring = true, nhãn phải của tôi biến mất ngay lập tức sau khi tsslSeparator mất tập trung. Vấn đề xuất hiện khi kích thước kẹp được kích hoạt. Khi nó bị vô hiệu hóa, mọi thứ hoạt động tốt. Giải pháp là đặt lề phải cho đúng nhãn thành một cái gì đó khác với 0.

tsslLogging.Margin = new Padding(0, 3, 2, 2); // this is necessary for right alignment of status bar label 

Hy vọng điều này sẽ giúp ai đó.

0

Nếu Microsoft không phải là thú vị trong sửa chữa nó, nó có vẻ như một sửa chữa thích hợp nên xử lý tất cả các định hướng, và lý tưởng sửa chữa tất cả Strips Status (xem câu trả lời của tôi để Get All Children cho định nghĩa của GetAllChildren)

public static StatusStrip FixPadding(this StatusStrip ss) { 
     if (!ss.SizingGrip) { 
      var fixpad = ss.Padding; 

      if (ss.Orientation == Orientation.Horizontal) { 
       if (ss.RightToLeft == RightToLeft.No) 
        fixpad.Right = fixpad.Left; 
       else 
        fixpad.Left = fixpad.Right; 
      } 
      else 
       fixpad.Bottom = fixpad.Top; 

      ss.Padding = fixpad; 
     } 

     return ss; 
    } 

    public static void FixStatusStripPadding(this Form f) { 
     foreach (var ss in f.GetAllChildren().OfType<StatusStrip>()) 
      ss.FixPadding(); 
    } 
Các vấn đề liên quan