2015-09-25 58 views
0

我有一個每次調用click事件的for循環。我想追加一些字符串到函數名。 說,button_click話,我希望它是Button_click1,Button_click2等。如何將一些字符串附加到函數名稱。

我想在值1,2等執行一些操作.. 請建議是否有訪問該信息的任何其他方式。

線程可以是我會選擇的最後一個選項。

+0

當您實際運行代碼(主要是)時,方法名稱無關緊要。你在做什麼? – Sayse

+0

您是否試圖在同一個對象上調用多個方法,其中每個方法名稱除了您打算從循環索引中檢索的數字後綴之外都是相同的? –

回答

0

你可以嘗試創建一個Button數組,然後你可以創建一個事件來點擊數組中的任何按鈕。

比,你可以使用一個for循環,關閉了包含當前索引的變量:

for(int i = 0; i < buttons.Length; i++) 
{ 
    //it's important to have this; closing over the loop variable would be bad 
    int index = i; 
    buttons[i].Click += (sender, args) => SomeMethod(buttons[index], index); 
} 

這可能將要拯救的代碼有很多行,更容易爲好。

0

我想你應該只是把所有的按鈕在列表中,像這樣:

List<Button> ButtonList = new List<Button>(){Button1, Button2}; 

然後就叫Button_Click爲每個按鈕像這樣:

Foreach(Button button in ButtonList) 
    button.Button_Click(this, new EventArgs()); 
1

其他的答案更正確的我的錢,但如果你真的需要基於字符串的調用我認爲你需要使用Reflection類。

String suffix = "_Click1"; 
Type myType = typeof(MyClass); 
myType.InvokeMember("Button"+ suffix, 
      BindingFlags.DeclaredOnly | 
      BindingFlags.Public | BindingFlags.NonPublic | 
      BindingFlags.Instance | BindingFlags.InvokeMethod, null, yourButtonObject, null);