在类之间传递WinForm控件危险/低效?

时间:2013-07-19 11:15:25

标签: c# .net winforms controls

由于我创建的几乎所有项目都包含ListViews,因此我想到了一个包含修改ListView的所有重要函数的Class。它看起来像这样:

的MainForm:

ListViewFunctions LVF = new ListViewFunctions();
ListView newLV = new ListView();
newLV = LVF.AddItem(newLV, new List<string> { "item", "subitem1", "subitem2" });

类别:

Public class ListViewFunctions
{
   public ListView AddItem(ListView LV, List<string> InputStrings)
   {
       if (InputStrings.Count > 0)
       {
           for (int i = 0; i < InputStrings.Count; i++)
           {
               if (i == 0)
                   LV.Items.Add(InputStrings[0]);
               else
                   LV.Items[LV.Items.Count - 1].SubItems.Add(InputStrings[i]);
           }
       }
       return LV;
    }
}

但是我不确定将控件传递给上面的类是否会被认为是危险的,也不会影响性能。所以我希望有人可以回答它是否安全。

提前致谢!

3 个答案:

答案 0 :(得分:4)

如果我计划将其设为通用的话,我可能只会使用辅助类,所以我可以在其他类型上使用该类。

通过扩展ListView来创建自定义控件可能是实现额外ListView方法的首选方法。

public class MyCustomListView : ListView
{

//...

} 

答案 1 :(得分:1)

只要你担心,如果同时被不同的线程操纵,这可能导致同步问题导致同样的碎片或不稳定的对象状态,那么传递类引用是完全有效的到其他班级 从软件工程的角度来看,它会影响可维护性和错误跟踪,如建议的那样,尝试扩展ListView类,如下所示:

public static HelperClass
{
  public static void AddItems(this ListView, params string[] itemsToAdd)
  {
     // to-do
  }
} 

答案 2 :(得分:0)

有时共享用户控件很有意义。但是,大多数情况下,情况并非如此。当这种技术很有用时,它非常有用。但是,只有在必要时才使用它,因为大多数时候它会使您的应用程序变得不必要复杂