2012-11-01 53 views
6

Tôi đang phát triển một ứng dụng yêu cầu điều khiển ListBox. Thật không may, khi tôi thêm quá nhiều mục trong ListBox, thanh cuộn dọc được hiển thị. Có điều gì tôi có thể làm để ẩn thanh cuộn dọc được hiển thị bởi ListBox không? Tôi có thể thấy rằng có một thuộc tính để ẩn thanh cuộn ngang nhưng không có thuộc tính nào cho thanh cuộn dọc.Ẩn thanh cuộn dọc trong điều khiển ListBox

+0

Nếu bạn xóa thanh cuộn dọc thì người dùng sẽ truy cập các mục qua mép cuộn như thế nào? –

+0

@LeeTaylor Cảm ơn bạn đã trả lời. Tôi đã quên đề cập đến rằng tôi có một RichTextBox. Tôi đã quản lý để kiểm soát hộp danh sách trong RichTextBox. Vì vậy, không cần hiển thị thanh cuộn trong hộp danh sách. Chúc một ngày tuyệt vời :) –

+0

OK, tôi không biết cách nào để xóa các thanh cuộn. Cách duy nhất tôi biết là đảm bảo hộp danh sách đủ dài để chứa tất cả các mục của bạn. –

Trả lời

8

Sự cố đã được giải quyết. Tôi đã chỉ đơn giản là tạo ra một dự án mới của mẫu một thư viện lớp học với đoạn mã sau

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace ClassLibrary1 
{ 
    public class MyListBox : System.Windows.Forms.ListBox 
    { 
     private bool mShowScroll; 
     protected override System.Windows.Forms.CreateParams CreateParams 
     { 
      get 
      { 
       CreateParams cp = base.CreateParams; 
       if (!mShowScroll) 
        cp.Style = cp.Style & ~0x200000; 
       return cp; 
      } 
     } 
     public bool ShowScrollbar 
     { 
      get { return mShowScroll; } 
      set 
      { 
       if (value != mShowScroll) 
       { 
        mShowScroll = value; 
        if (IsHandleCreated) 
         RecreateHandle(); 
       } 
      } 
     } 
    }  
} 

Sau đó, tôi đã xây dựng các dự án xuất ra một lớp thư viện mới ClassLibrary1.dll

Mở dự án chính của tôi, tôi đã nhấp chuột phải vào ToolBox và chọn Choose Items.... Nhấp vào Duyệt qua ... và chọn thư viện lớp mà tôi vừa tạo (ClassLibrary1.dll) và nhấp vào Mở sau đó trên OK. Vì vậy, tôi đã có thể có tùy chỉnh ListBox của mình mà không có thanh cuộn dọc nữa.

1

Trừ thanh cuộn ngang, không có cách nào để sử dụng bình thường, bạn có thể tắt thanh cuộn dọc.

Bạn chỉ có thể đặt thiết bị luôn hiển thị hoặc tự động sử dụng thuộc tính ScrollAlwaysVisible (cũng bằng VB).

Khi bạn thêm mục mà bạn có thể thay vào đó lại tính toán ClientSize bằng cách tính toán, một cái gì đó như thế này (chưa được kiểm tra, bạn có thể cần phải thêm giá trị Padding để nó là tốt):

Size sz = new Size(ListBox1.ClientSize.Width, _ 
        ListBox1.Items.Count * ListBox1.Font.Height); 
ListBox1.ClientSize = sz 

Tất nhiên, bạn nên thêm kiểm tra giá trị trong trường hợp nó bằng 0 và/hoặc bạn muốn có chiều cao tối thiểu/tối đa.

+0

Cảm ơn bạn, tôi đã ẩn thành công thanh cuộn dọc tạo thư viện lớp. Tôi sẽ gửi giải pháp của tôi trong một thời điểm :) –

+1

Nice :-) Khi bạn hỏi nếu nó có thể được thực hiện với các ListBox kiểm soát tôi sẽ để lại câu trả lời của tôi như là :-) – K3N

+0

Không có vấn đề gì. Cảm ơn vì đã trả lời. Có một ngày tuyệt vời :) –

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