Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定列表<;T>;在C中使用datagridview#_C#_Winforms - Fatal编程技术网

C# 绑定列表<;T>;在C中使用datagridview#

C# 绑定列表<;T>;在C中使用datagridview#,c#,winforms,C#,Winforms,我想知道直接将列表绑定到datagridview数据源和将Bindingsource绑定到datagridview之间的区别。下面是一个例子: 例1: List List=this.GetEmployees(); dgveemployees.Datasource=list; 例2: List List=this.GetEmployees(); BindingSource源=新的BindingSource(); source.Datasource=list; dgveemployees.Data

我想知道直接将列表绑定到datagridview数据源和将Bindingsource绑定到datagridview之间的区别。下面是一个例子:

例1:

List List=this.GetEmployees();
dgveemployees.Datasource=list;
例2:

List List=this.GetEmployees();
BindingSource源=新的BindingSource();
source.Datasource=list;
dgveemployees.Datasource=soure;

那么,哪一个应该是好的实践呢?

一般来说,直接使用
数据源
用于简单的案例,而使用
绑定源
用于更复杂的案例。如果您只想显示数据,而不想在数据显示之前对其进行修改,请随意使用
Datasource

另一方面,
BindingSource
允许您(不是详尽的列表):

  • 指定
    Format
    方法在用户看到列表数据之前转换列表数据,并指定
    Parse
    方法在用户编辑列表数据之后将其转换回
  • 跟踪列表中的当前(选定)项
  • 自定义添加新元素的方式
  • 禁止编辑当前项
  • 添加或删除元素时收到通知

如果我必须选择。。如果他们都能工作,第一个。。代码行数减少一半,更易于阅读。编辑第二个看起来很难看。。a=b;c=a;另外,我会将soure键入为source.Related/duplicate:
List<Employee> list = this.GetEmployees();
dgvEmployees.Datasource = list;
List<Employee> list = this.GetEmployees();
BindingSource soure = new BindingSource();
soure.Datasource = list;
dgvEmployees.Datasource = soure;