2015-05-16 10 views

Trả lời

6

Bạn có thể có một cái nhìn vào TextRenderer.MeasureText().

Để tính chiều rộng của một văn bản chú thích sử dụng đoạn mã này:

var width = TextRenderer.MeasureText(caption, SystemFonts.CaptionFont).Width; 

Bạn có thể sử dụng kích thước của mẫu của bạn, trừ một giá trị cố định cho các biểu tượng (nếu có thể nhìn thấy) và các nút phía trên bên phải (phụ thuộc vào phiên bản hệ điều hành và trạng thái hiển thị của các nút [Thu nhỏ] [Tối đa hóa]) và kiểm tra xem nó có còn tích cực hay không. Điều này có thể không cung cấp cho bạn một kết quả hoàn toàn chính xác, nhưng nó có lẽ là xấp xỉ đơn giản nhất.

Cho đến nay, phương pháp này dường như để tính toán một xấp xỉ khá chính xác:

/// <summary> 
/// Calculates an approximation of the available caption width 
/// Depends on OS and theme 
/// </summary> 
/// <returns>Width</returns> 
private int CalcAvaliableCaptionWidth() 
{ 
    return 
    // Form width 
    Width 
    // Icon 
    - (Icon == null ? 0 : Icon.Width) 
    // Minimize button (26 on Win8) 
    - (MinimizeBox ? SystemInformation.CaptionButtonSize.Width : 0) 
    // Maximize button (26 on Win8) 
    - (MaximizeBox ? SystemInformation.CaptionButtonSize.Width : 0) 
    // Close button (45 on Win8) 
    - SystemInformation.CaptionButtonSize.Width; 
} 

Bạn có thể thử ít ứng dụng xác minh WinForm tôi

verification WinForm application

Source code: https://gist.github.com/CodeZombieCH/b9def0b0d9c41a98593a

Nhờ @Plutonix cho gợi ý đến SystemInformation.CaptionButtonSize.

+3

Tôi chắc rằng bạn biết rằng câu trả lời này chưa hoàn thành. Làm thế nào để bạn tìm thấy nếu textSize kết quả sẽ phù hợp trong khu vực hình thức chú thích miễn phí từ các nút tiêu chuẩn và biểu tượng cho menu ngữ cảnh? – Steve

+3

sử dụng 'System.Windows.Forms.SystemInformation.CaptionButtonSize' để lấy kích thước của các nút thanh tiêu đề tiêu chuẩn. Số lượng hiện tại sẽ phụ thuộc vào các hình thức đạo cụ khác (MinimizeBox, ControlBox, vv). – Plutonix

+0

CodeZombie và @Plutonix, cảm ơn, điều này đã làm việc hoàn hảo! – Mierzen

Các vấn đề liên quan