gpt4 book ai didi

c# - 将方法作为参数传递给另一个方法

转载 作者:行者123 更新时间:2023-12-02 05:11:00 25 4
gpt4 key购买 nike

我正在 widows c#.net 中开发项目。在表单中,我有超过 8 个组合框控件。当 combobox1 选择如下更改时,我会将数据加载到 combobox2。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox2.DataSource = DataTable;
comboBox2.DisplayMember="Name";
comboBox2.ValueMember = "ID";
}

当我像下面这样选择 combobox2 时,Combobox3 将被加载。

 private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox3.DataSource = DataTable;
comboBox3.DisplayMember = "Age";
comboBox3.ValueMember = "AgeCode";
}

比如我会将数据加载到组合框的其余部分。
这里的问题是如果我没有检查 comboBox1_SelectedIndexChanged 方法是否加载了 comboBox2,就会发生错误。

我知道我们可以使用 bool 变量来检查这一点,但可怕的是我们需要为其余所有方法保持其“真/假”状态。

所以我想用简单的方法解决这个问题是,我将使用 Add(combobox, Methodname) 方法和 Remove(combobox, method) 方法来在组合框 SelectedIndexChanged 事件中添加和删除 comboBox_SelectedIndexChanged 函数。

但我无法将方法作为参数传递。谁能告诉我如何根据我的要求将方法作为参数传递。

最佳答案

通过 method Add 中的参数和 Remove方法,如果你的意思是 comboBox1_SelectedIndexChanged和/或 comboBox2_SelectedIndexChanged那么解决方案是

private void Add(ListControl dropDownList, EventHandler handlerMethodName)
{
dropDownList.OnSelectedIndexChanged += handlerMethodName;
//some logic here
}

private void Remove(ListControl dropDownList, EventHandler handlerMethodName)
{
dropDownList.OnSelectedIndexChanged -= handlerMethodName;
//some logic here
}

请注意:是DropDownListASP.NET , ComboBox用于 WinForms应用程序。

更多请引用:MSDN - DropDownListMSDN - ListControl.SelectedIndexChanged Event

关于c# - 将方法作为参数传递给另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com