2008-09-27 30 views
11

Tôi đã tạo một điều khiển WinForms kế thừa từ System.Windows.Forms.UserControl ... Tôi có một số sự kiện tùy chỉnh trên điều khiển mà tôi muốn người tiêu dùng kiểm soát của mình có thể nhìn thấy. Tôi không thể thực sự hiển thị sự kiện của mình trong tab Sự kiện của cửa sổ Thuộc tính trong suốt thời gian thiết kế. Điều này có nghĩa là cách duy nhất để gán các sự kiện được lập trình viếtThiết kế Thời gian xem cho các sự kiện Kiểm soát người dùng

myUserControl.MyCustomEvent += new MyUserControl.MyCustomEventHandler(EventHandlerFunction); 

này là tốt cho tôi, tôi đoán nhưng khi ai đó nói đến sử dụng UserControl của tôi họ sẽ không biết rằng những sự kiện tồn tại (trừ khi họ đọc doco thư viện ... vâng phải). Tôi biết sự kiện sẽ hiển thị bằng cách sử dụng Intellisense nhưng nó sẽ là tuyệt vời nếu nó có thể hiển thị trong cửa sổ thuộc tính quá.

Trả lời

23

Đảm bảo sự kiện của bạn được hiển thị công khai. Ví dụ:

[Browsable(true)] 
public event EventHandler MyCustomEvent; 
+0

Đó là trình xử lý sự kiện tùy chỉnh công khai và loại trình xử lý sự kiện là đại biểu công khai ... không có ing chức năng sai ... các sự kiện làm việc và cháy theo cách chính xác, nó hoàn toàn là một vấn đề thời gian thiết kế. –

+0

Aha, đảm bảo định nghĩa trình xử lý sự kiện luôn được khai báo là công khai nếu không nó sẽ không hiển thị. –

+0

Như tôi đã nói nó là công khai ... –

0

Giải pháp sử dụng đại biểu. Ví dụ tôi sử dụng cho một ListView tùy chỉnh mà xử lý sự kiện mục thêm: Khai đại biểu của bạn:

public delegate void ItemAddedHandler(object sender, ItemEventArgs e) 

sau đó tuyên bố các sự kiện mà sử dụng các đại biểu:

[Browsable(true)] 
    public event ItemAddedHandler ItemAdded; 

Lưu ý: ItemEventArgs là một EventArgs tùy chỉnh

Hy vọng có thể giúp bạn, hoạt động tốt cho tôi

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