我想根据组合框的选定值执行几种方法。 我目前正在使用以下代码:
switch (comboBox1.SelectedIndex)
{
case 1:
// call method1
break;
case 2:
// call method2
break;
}
是否有一种很好的方法可以获得相同的功能,例如combobox.selectedIndex == 1
然后自动调用方法1?
答案 0 :(得分:2)
最简单的方法是使用代理人:
private readonly Dictionary<int, Action> actions = new Dictionary<int, Action>
{
{ 1, Method1 },
{ 2, Method2 },
{ 3, Method3 },
};
允许你做这样的事情:
actions[comboBox.SelectedIndex]();
当然,您也可以使用反射,但保持静态链接有很多好处:)
答案 1 :(得分:0)
使用反思
public int Method0()
{
MessageBox.Show("method0");
return 0;
}
public int Method1()
{
MessageBox.Show("method1");
return 1;
}
public int Method2()
{
MessageBox.Show("method2");
return 2;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox comboBox = (ComboBox)sender;
System.Reflection.MethodInfo tmp = this.GetType().GetMethod("Method" + comboBox.SelectedIndex.ToString());
if (tmp==null)
{
MessageBox.Show("method named '" + "Method" + comboBox.SelectedIndex.ToString() + "' dont exist");
}
else
{
int result=(int)tmp.Invoke(this, null);
}
}