我有一个 DataGrid
视图1和一个 ListView
,每当我选择列表视图项目(我将 ListView
项目传递到查询中,并根据该项目填充 DataGrid
视图)
我编写了如下代码...
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应用程序。
a
,b
,c
和d
是什么?),但就个人而言,我会创建一个带有一个方法的接口,并将从该接口派生的类放入列表视图中。将method1等的内容放入派生类中的方法中。然而,我不知道在您的情况下是否有意义,但是一个大的if..else块总是告诉您应该考虑创建一个类层次结构,并让多态性找出需要调用的正确方法。 - Daniel Hilgarth