簡體   English   中英

C#等效於VB.NET'處理button1.Click,button2.Click'

[英]C# equivalent to VB.NET 'Handles button1.Click, button2.Click'

VB.NET中,我可以做

 private sub button_click(sender, e) handles Button1.Click, Button2.Click etc... do something... end sub 

在C#.NET中是否有針對此的方法? 我大約有16個按鈕,它們都調用相同的函數,只是將按鈕的文本傳遞給該函數。 我寧願沒有16 private void button_clicks調用一個函數。

我不確定如何執行此操作(對C#不太了解。)

Button1.Click += button_click;
Button2.Click += button_click;

您可以手動執行以下操作:

button1.Click += button_Click;
button2.Click += button_Click;
...

在Designer中,Click事件屬性實際上是一個下拉菜單,您可以在其中選擇具有適當簽名的現有方法。

C#沒有Handles關鍵字。
相反,您需要顯式添加處理程序:

something.Click += button_click;
somethingElse.Click += button_click;

嘗試這個:

button1.Click += button_click;
button2.Click += button_click;

如果您想保持它的可維護性,我會選擇這樣的方法:

//btnArray can also be populated by traversing relevant Controls collection(s)
Button[] btnArray = new Button[] {button1, button2};
foreach(Button btn in btnArray) {
  btn.Click += button_Click;
}

對該代碼的任何重構都是通過單點維護完成的。 例如:

  • 您決定通過自定義事件(即MyClick)綁定到自定義按鈕類。
  • 您決定更改按鈕收集方式的邏輯,添加或刪除按鈕。
  • 您認為button_Click是一個不好的名字,或者需要有條件的事件綁定。
btn1.Click += button_click;
btn2.Click += button_click;

就是答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM