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,这样所有集合都可以分配给数据源。