我有一个DataGridView
来填充DataSource
,例如:
this.dgvBackchecks.DataSource = db.GetTableBySQL($"exec usp_Backcheck_Get_List");
它可以正常工作,并根据需要返回列:
因此,我使用DataGridView
的属性将某些项目设置为false:
this.dgvBackchecks.Columns["ProjectKey"].Visible = false;
this.dgvBackchecks.Columns["DesignKey"].Visible = false;
this.dgvBackchecks.Columns["BackColor"].Visible = false;
它正在工作,问题是当我尝试更改Job No
列宽时:
this.dgvBackchecks.Columns["Job No"].Width = 45;
它总是抛出Null异常:
System.NullReferenceException:'对象引用未设置为 对象的实例。'
要进行简单测试并确认Job No
不为空,我尝试将Job No
的visible设置为false,就像其他列一样:
this.dgvBackchecks.Columns["Job No"].Visible = false;
它起作用了,所以在列列中是否存在列不是问题,因为列已经存在。我真的不明白那里出了什么问题。
完整代码:
this.dgvBackchecks.DataSource = db.GetTableBySQL($"exec usp_Backcheck_Get_List");
this.dgvBackchecks.Columns["ProjectKey"].Visible = false;
this.dgvBackchecks.Columns["DesignKey"].Visible = false;
this.dgvBackchecks.Columns["BackColor"].Visible = false;
this.dgvBackchecks.Columns["Job No"].Visible = false; //This works
this.dgvBackchecks.Columns["Job No"].Width = 45; //This no works
Width
属性有什么问题?
答案 0 :(得分:1)
您可以在设置AutoSizeMode
之前尝试设置列Width
的属性
this.dgvBackchecks.Columns["Job No"].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
this.dgvBackchecks.Columns["Job No"].Width = 60;