<分区>
我创建了一个从不同目录中删除文件的应用程序。 我为每个目录做了不同的方法。
在 UI 中,我希望用户选择他想要删除的目录。
选择是通过复选框列表完成的,最终当用户选择他想要清空的所有目录时,他可以点击播放按钮。
我的问题是:这里的正确方法是什么? 是否可以将检查按钮与方法相关联? 或者我应该在播放按钮后面做一个很长的分支代码?
<分区>
我创建了一个从不同目录中删除文件的应用程序。 我为每个目录做了不同的方法。
在 UI 中,我希望用户选择他想要删除的目录。
选择是通过复选框列表完成的,最终当用户选择他想要清空的所有目录时,他可以点击播放按钮。
我的问题是:这里的正确方法是什么? 是否可以将检查按钮与方法相关联? 或者我应该在播放按钮后面做一个很长的分支代码?
最佳答案
我会做这样的事情:
private Dictionary<string, Action> _selectedActions = null;
private void Form1_Load(object sender, EventArgs e)
{
this.checkedListBox1.Items.Add("Apple");
this.checkedListBox1.Items.Add("Banana");
this.checkedListBox1.Items.Add("Cherry");
_selectedActions = new Dictionary<string, Action>()
{
{ "Apple", Apple },
{ "Banana", Banana },
{ "Cherry", Cherry },
};
}
private void Apple() { MessageBox.Show("Ran Apple"); }
private void Banana() { MessageBox.Show("Ran Banana"); }
private void Cherry() { MessageBox.Show("Ran Cherry"); }
private void button1_Click(object sender, EventArgs e)
{
foreach (var action in this.checkedListBox1
.CheckedItems
.Cast<string>()
.Select(x => _selectedActions[x]))
{
action();
}
}
这种方法的重要部分是设置复选框项目的代码部分也设置了 Dictionary<string, Action>
这有助于防止名称与复选框项和字典键不匹配。在所有其他方面,此代码都是强类型的。
关于C# - 将检查列表按钮与方法相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43768798/