Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# 将DataGridView绑定到特定对象_C#_Winforms_Datagridview - Fatal编程技术网

C# 将DataGridView绑定到特定对象

C# 将DataGridView绑定到特定对象,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在尝试创建一个自定义的DataGridView控件,该控件继承自DataGridView。在这种情况下,此控件仅用于一个原因(例如显示员工列表),其中我们需要在项目中显示员工列表,网格有自己的模型,我想要的是将数据源仅绑定到列表的类型,而不是其他任何内容 任何建议都会有帮助。在自定义类中,您可以使用new修饰符使用所需类型编写自己的数据源属性。这样,类的用户将看到它被键入 class CustomGrid: DataGridView { public new List<Emplo

我正在尝试创建一个自定义的
DataGridView
控件,该控件继承自
DataGridView
。在这种情况下,此控件仅用于一个原因(例如显示员工列表),其中我们需要在项目中显示员工列表,网格有自己的模型,我想要的是将
数据源
仅绑定到
列表
的类型,而不是其他任何内容


任何建议都会有帮助。

在自定义类中,您可以使用
new
修饰符使用所需类型编写自己的数据源属性。这样,类的用户将看到它被键入

class CustomGrid: DataGridView
{
   public new List<Employee> DataSource 
   {
          get { return (List<Employee>)base.DataSource;}
          set { base.DataSource = value;}
   }   
}
class CustomGrid:DataGridView
{
公共新列表数据源
{
获取{return(List)base.DataSource;}
设置{base.DataSource=value;}
}   
}

需要注意的是,调用方仍然可以通过强制转换到
DataGridView
来访问旧属性,这一限制有什么作用?如果您不想绑定任何非
列表的内容,那么:不要分配非
列表的内容
-我只是想知道为什么首先需要/需要这样做这不是为了限制,我试图避免其他开发人员的错误并节省时间。将
DataGridView
限制为只允许
List
作为数据源现在看起来可能很聪明,但以后可能会成为一个问题。例如,将来有人可能会发现
bindingslist
更适合数据绑定;但无法轻松替换数据源,因为您明确禁止该数据源。@stakx:您是对的,但在这种情况下您的建议是什么。@SaberAmani,您可以将列表替换为IEnumerable,这样所有集合都可以分配给数据源。