我试图根据组合框的信息调用函数。用户将更改组合框,在此过程中,我们根据与固定文本连接的组合框文本中的数据调用函数。我正在尝试这样做,因此每次获得新版本时,我只需添加一个文件夹,而不必像在 case 语句中那样进入代码添加新函数名称。
组合框的文本为
v6.1
v6.4
v7.2
v8.6
等等
我想要调用的函数名为 Getinfo_,并添加了组合框中的文本,扩展名为 . 替换为 _ 例如,我会从组合框中选择 v6.1,这样做时我会调用名为 Getinfo_v6_1 的函数
经过大量的思考、搜索和尝试,我已经接近但还不够接近。我想我需要使用反射(也许不需要)并且
private void cmbobx_version_SelectedIndexChanged(object sender, EventArgs e)
{
Type t = this.GetType(); //need to get the type
MethodInfo method = t.GetMethod("Getinfo" + cmbobx_version.Text.Replace('.', '_')); //put together function name
method.Invoke(this, new object[] {Fridge, "Order" }); //call function with parameters
}
不幸的是,这在调用时停止,说该方法为 NULL,我不明白为什么会这样,除了也许我完全误解了我在做什么。
我想调用的函数看起来有点像下面的
public void Getinfo_v6_1(ComboBox inFocusComboBox, string action)
{
switch (inFocusComboBox.Text)
{
case "Red": Price = 11254; break;
case "Blue": Price = 11278; break;
case "Green": Price = 11354; break;
}
}
public void Getinfo_v6_4(ComboBox inFocusComboBox, string action)
{
switch (inFocusComboBox.Text)
{
case "Red": Price = 254; break;
case "Blue": Price = 278; break;
case "Green": Price = 354; break;
}
}
即使您有更好的方法来做我需要做的事情,我们也非常感谢您的所有帮助。
缥缈止盈
芜湖不芜
相关分类