我将列表绑定到datagridview时遇到问题。 该列表包含一个自定义类的实例,其中一个prop是" Nom"。
列是我Datagridview
的第一列。
这是由VS在这个正确的部分自动声明的:
column = new System.Windows.Forms.DataGridViewComboBoxColumn();
出于任何原因,如果我在column.DisplayMember
之后致电column.DataSource
,我会收到nullreference
例外情况。
相同的代码适用于combobox
。我错过了datagridviews
特定的内容吗?
BindingSource bs = new BindingSource();
List<C_Exercice> l = new List<C_Exercice>();
l.Add(new C_Exercice("n", "", "", "", "", DateTime.Now, 1, 1, 5, 0, true));
bs.DataSource = l;
column.DisplayMember = "Nom";
// -> works fine
column.DataSource = bs;// My_Business.Get_Exercices_List("", "", "", 0, -1, true);
column.DisplayMember = "Nom";
//-> when called again, cause a nullreference exception
DisplayMember
的第二次调用将导致以下异常:
An unhandled exception of type 'System.NullReferenceException' occurred in System.Windows.Forms.dll
Additional information: Object reference not set to an instance of an object.
答案 0 :(得分:0)
陌生人和陌生人。 项目内部导致问题: 我删除了导致isue的datagrid 我用一个组合框列(名为System.Windows.Forms.DataGridViewComboBoxColumn.column2)创建一个新的datagridview。我测试了相关的代码,它工作正常。 然后我在这个datagrid中插入导致问题的旧组合框列:System.Windows.Forms.DataGridViewComboBoxColumn.column)。我在InitializeComponent()之后复制了导致问题的代码。 相同的代码适用于新的DataGridViewComboBoxColumn,但仍然会导致旧控件的null引用错误。 似乎指向控制声明或参数的问题。这看起来与我在房产中看到的相似。
以这种方式声明控件: private System.Windows.Forms.DataGridViewComboBoxColumn column2; private System.Windows.Forms.DataGridViewComboBoxColumn列; 它们属于同一个datagridview。
这是在InitializeComponent()之后测试的代码:
BindingSource bs2 = new BindingSource();
List<C_Exercice> l2 = new List<C_Exercice>();
l2.Add(new C_Exercice("n", "", "", "", "", DateTime.Now, 1, 1, 5, 0, true));
bs2.DataSource = l2;
column2.DisplayMember = "Nom"; //works fine
column2.DataSource = bs2;// My_Business.Get_Exercices_List("", "", "", 0, -1, true);
column2.DisplayMember = "Nom"; //works fine
BindingSource bs = new BindingSource();
List<C_Exercice> l = new List<C_Exercice>();
l.Add(new C_Exercice("n", "", "", "", "", DateTime.Now, 1, 1, 5, 0, true));
bs.DataSource = l;
column.DisplayMember = "Nom"; //works fine
column.DataSource = bs;// My_Business.Get_Exercices_List("", "", "", 0, -1, true);
column.DisplayMember = "Nom"; //causes the nullreference error
好吧,我刚删除导致问题的控件并使用新控件。它解决了我的问题。 但如果有人知道我为什么遇到这个问题,我会很乐意测试它,以防决议可以帮助其他人面对同样的问题。