2011-08-04 11 views
5

Tôi có một hộp danh sách có thể chứa các chuỗi rộng hơn. Tôi quá lười biếng để viết mã thay đổi kích cỡ tại thời điểm này, vì vậy tôi hiển thị chú giải công cụ hiển thị toàn bộ mục nếu nó quá lớn để vừa với hộp danh sách.Trong một Listbox, làm thế nào tôi có thể nhận được chiều rộng của hộp danh sách trừ đi không gian thanh cuộn chiếm?

Hiện tại, tôi đang lấy chiều rộng bằng cách sử dụng thuộc tính Width và so sánh nó với kết quả từ MeasureText bằng chuỗi và phông chữ làm đối số.

Tính năng này hoạt động tốt trong hầu hết thời gian nhưng không hoạt động trong trường hợp mục phù hợp với hộp danh sách mà không có thanh cuộn nhưng không vừa với hộp danh sách hơi mỏng hơn với thanh cuộn.

Vì vậy, làm thế nào tôi có thể tìm hiểu:

  1. nếu một ListBox được hiển thị một thanh cuộn
  2. chiều rộng của hộp danh sách không bao gồm các thanh cuộn

Tôi đoán 2 sẽ được giải quyết nếu thanh cuộn chiếm cùng chiều rộng pixel bất kể phiên bản windows hoặc cấu hình hiển thị mà phiên bản đang chạy. Có ai biết nếu điều này là đúng hay không?

Trả lời

5

Bạn có thể sử dụng ListBox.ClientRectangle.Width để lấy không gian bên trong được sử dụng bởi điều khiển.

Nếu ScrollBar hiển thị, giá trị chiều rộng được trả lại sẽ là chiều rộng bên trong trừ chiều rộng ScrollBar, vì vậy bạn có thể đo lường nó một cách an toàn.