gpt4 book ai didi

c# - 如何避免重复代码提高效率

转载 作者:太空狗 更新时间:2023-10-29 21:46:43 27 4
gpt4 key购买 nike

我有一个 DataGrid view1 和一个 ListView,每当我选择 ListView 项时(我将 ListView 项传递到根据该项目查询和填充 DataGrid View )

我写过这样的代码......

 private void listview_selectedindexchanged(object sender event args)
{
if (listview.SelectedItems.Count > 0 && listview.SelectedItems[0].Group.Name == "abc")
{
if(lstview.SelectedItems[0].Text.ToString() == "sfs")
{
method1();
}
else
{
// datagrid view1 binding
blah.....
}
}
if (lstview.SelectedItems.Count > 0 && lstview.SelectedItems[0].Group.Name == "def")
{

if(lstview.SelectedItems[0].Text.ToString() == "xyz")
{
method 1();
}
if(lstview.SelectedItems[0].Text.ToString() == "ghi")
{
method 2(a,b);
}
if(lstview.SelectedItems[0].Text.ToString() == "jkl")
{
method 2(c,d);
}
if(lstview.SelectedItems[0].Text.ToString() == "mno")
{
method 3();
}

}
}
private void method 1()
{
// datagrid view1 binding
blahh
}
private void method 2(e,g)
{
// datagrid view1 binding
blah....blah..
}
private void method 3()
{

// datagrid view1 binding
}

我已经像上面那样做了......我认为这不是一种有效的编码方式。而且这段代码由很多重复的行组成,有什么办法可以将这段代码折射成一小段代码......为了提高效率?

任何提高代码效率的想法和示例片段都会对我有所帮助......

提前致谢....

我正在使用 C# 并编写 WinForms 应用程序......

最佳答案

您可以将委托(delegate)保存到 ListView 项中。并在选择封装项时调用它。例如,您将像这样填写您的列表框:

ListViewItem item = new ListViewItem("abc");
item.Tag = new Delegate(method1);
lstview.Items.Add(item);

现在,当此项被选中时,您可以像这样执行方法:

private void listview_selectedindexchanged(object sender event args)
{
((Delegate)lstview.SelectedItems[0].Tag)(); // this will execute method1 if the item with text "abc" gets selected
}

注意:!尚未测试此代码,但按照这些思路应该可以工作,您不必编写 If 语句,您只需正确构造项目即可。

另请注意,对于刚接触此代码的人来说,这可能有点难以阅读。

关于c# - 如何避免重复代码提高效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7229396/

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