2011-12-23 11 views
6

Tôi đang cố gắng thực hiện điều khiển biểu mẫu .net với chức năng tương tự như hộp tổ hợp, nhưng tôi không biết phương pháp thích hợp để chặn sự kiện chuột ở bất kỳ đâu trên biểu mẫu để hủy mở rộng danh sách các mục.Làm thế nào để kết hợp các hộp, khi hiển thị các mục danh sách, đánh chặn các sự kiện chuột đến bất cứ đâu trên biểu mẫu để ẩn danh sách?

Làm cách nào để ngăn các điều khiển khác phản hồi sự kiện chuột khi danh sách đang được hiển thị?

Làm cách nào để xem sự kiện nhấp chuột vào bất kỳ vị trí nào trên biểu mẫu một cách hiệu quả và an toàn để ẩn danh sách được mở rộng?

+0

bạn có thể tìm thấy giải pháp khác tại đây: http://stackoverflow.com/a/15305176/1522062 –

Trả lời

6

Chỉ cần sử dụng ToolStripControlHost cùng với ToolStripDropDown và nó sẽ hoạt động giống như menu thả xuống ComboBox. Bạn sẽ không phải lo lắng về việc xử lý các sự kiện chuột.

Tôi đã sử dụng này trước:

Private Sub ShowControl(ByVal fromControl As Control, ByVal whichControl As Control) 
    '\\ whichControl needs MinimumSize set:' 
    whichControl.MinimumSize = whichControl.Size 

    Dim toolDrop As New ToolStripDropDown() 
    Dim toolHost As New ToolStripControlHost(whichControl) 
    toolHost.Margin = New Padding(0) 
    toolDrop.Padding = New Padding(0) 
    toolDrop.Items.Add(toolHost) 
    toolDrop.Show(Me, New Point(fromControl.Left, fromControl.Bottom)) 
End Sub 

nhanh Demo với một điều khiển Nút trên một hình thức:

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
    ShowControl(Button1, New MonthCalendar) 
End Sub 

Để trả lời câu hỏi ở tiêu đề của bạn, tôi nghĩ các cuộc gọi pinvoke của SetCaptureRelease Capture được sử dụng để xử lý loại chức năng đó.

1

Control.Capture

Như đã giải thích trong tài liệu, bạn ngay bây giờ "riêng" chuột (cho đến khi ai đó bắt nó - mặc dù đó là hình thức xấu). Bạn nhận được tất cả các tin nhắn chuột và có thể xử lý "Xuống" không nằm trong tầm kiểm soát của bạn để loại bỏ.

+0

Điều này dường như chỉ có một nửa công việc. Tất cả các điều khiển trong tầm kiểm soát với việc chụp chuột ngừng hoạt động. Ví dụ: thanh cuộn trong hộp danh sách có tính năng chụp chuột không hoạt động cho đến khi chụp được giải phóng. –

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