2012-03-13 28 views
7

Tôi có một điều khiển người dùng được gọi là GameButton có một nhãn bên trong nó. Khi tôi thêm điều khiển người dùng vào biểu mẫu của tôi và thêm sự kiện nhấp vào nó, nó được kích hoạt khi bạn nhấp vào nền của nút tùy chỉnh, nhưng không phải là văn bản trong nhãn? Làm cách nào để khắc phục sự cố này mà không thêm một loạt các sự kiện nhấp vào bên trong mã điều khiển người dùng?Sự kiện nhấp chuột điều khiển người dùng không hoạt động khi nhấp vào văn bản bên trong kiểm soát?

chỉnh sửa: UI framework: WinForms

+0

khung UI (Winforms, WPF, Webforms, MVC)? –

+0

xin lỗi, Winforms – Oztaco

+0

Cũng hãy tránh bao gồm các thẻ có ít hoặc không có gì để làm với câu hỏi của bạn (ví dụ như visual-studio) –

Trả lời

10

Nếu tôi hiểu bạn đúng cách, usercontrol GameButton của bạn sẽ cháy sự kiện khi nhấp vào, nhưng không phải khi nhãn được nhấp vào - và bạn muốn cả hai. Điều này là do nhãn (điều khiển) nằm trên nền. Do đó, bạn cần phải đăng ký nhãn của mình với sự kiện nhấp chuột. Điều này có thể được thực hiện thủ công trong trình thiết kế hoặc lập trình cho mỗi điều khiển trên trang.

Nếu bạn muốn làm EVERY kiểm soát trong UserControl, đưa điều này vào sự kiện onload của UserControl và bạn có thể sử dụng các sự kiện cùng một nhấp chuột cho mỗi điều khiển:

foreach(Control c in this.Controls){ 
    c.Click += new EventHandler(yourEvent_handler_click); 
} 

public void yourEvent_handler_click (object sender, EventArgs e){ 
    //whatever you want your event handler to do 
} 

EDIT: Cách tốt nhất là để tạo ra các bấm vào sự kiện xử lý sự kiện trong điều khiển người dùng. Bằng cách này, mỗi khi bạn thêm/xóa sự kiện nhấp chuột vào điều khiển người dùng của mình, nó sẽ tự động thêm/xóa tất cả các điều khiển trong điều khiển người dùng.

public new event EventHandler Click { 
     add { 
      base.Click += value; 
      foreach (Control control in Controls) { 
       control.Click += value; 
      } 
     } 
     remove { 
      base.Click -= value; 
      foreach (Control control in Controls) { 
       control.Click -= value; 
      } 
     } 
    } 

Đây là theo một post:

Hope this helps!

+0

Tôi muốn có thể thêm các sự kiện nhấp chuột vào các nút tùy chỉnh theo cách bạn thực hiện với các nút thông thường trong trình thiết kế, nhưng chúng không ảnh hưởng đến nhãn – Oztaco

+0

Tôi không chắc rằng tôi hiểu @EfeOzturkoglu. Bạn muốn usercontrol của bạn được như thể nó là một nút thông thường, nơi bạn có thể bấm vào nó bất cứ nơi nào với một xử lý sự kiện? – ImGreg

+0

vâng, như tôi không muốn phải thêm một xử lý để kiểm soát và nhãn bên trong nó mỗi lần, chỉ cần thêm nó một lần bất cứ khi nào tôi tạo ra một ví dụ mới của nút – Oztaco

0

Tận dụng "kích hoạt" tài sản của các nhãn của bạn "False, sau đó các sự kiện chuột sẽ làm việc trong điều khiển người dùng.

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