我有一个奇怪的问题。我有两个TabControl
TabPages
。每个页面都有一个datagridview
。 datagridviews
都填充了XML
个文件。
我想将AutoSizeColumnsMode
设置为" Fill
"两个DataGridViews
。我想在我的代码中设置列的宽度。
TabPage1
一切正常,但DataGridView
TabPage2
的设置宽度会引发NullReferenceException
。
我真的没有得到它,因为我对datagridview1
做了同样的事情,并且工作正常但datagridview2
抛出异常。此外,如果我选择任何AutoSizeColumnsMode
值但Fill
以下是代码:
XmlReader xmlFile = XmlReader.Create("File1.xml", new XmlReaderSettings());
DataSet ds = new DataSet();
ds.ReadXml(xmlFile);
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Sort(dataGridView1.Columns[1], ListSortDirection.Ascending);
dataGridView1.Columns[0].Width = 35;
dataGridView1.Columns[1].Width = 248;
dataGridView1.Columns[2].Width = 110;
dataGridView1.Columns[3].Width = 140;
dataGridView1.Columns[9].Width = 127;
dataGridView1.Columns[0].Visible = false;
dataGridView1.Columns[1].Visible = true;
dataGridView1.Columns[2].Visible = true;
dataGridView1.Columns[3].Visible = true;
dataGridView1.Columns[4].Visible = false;
dataGridView1.Columns[5].Visible = false;
dataGridView1.Columns[6].Visible = false;
dataGridView1.Columns[7].Visible = false;
dataGridView1.Columns[8].Visible = false;
dataGridView1.Columns[9].Visible = true;
dataGridView1.Columns[10].Visible = true;
dataGridView1.Columns[10].Width = 100;
xmlFile.Close();
XmlReader xmlFile2= XmlReader.Create("File2.xml", new XmlReaderSettings());
DataSet ds2 = new DataSet();
ds2.ReadXml(xmlFile2);
dataGridView2.DataSource = ds2.Tables[0];
dataGridView2.Columns[0].Width = 135; // The exception is thrown here
dataGridView2.Columns[9].Width = 200;
dataGridView2.Columns[8].Width = 300;
dataGridView2.Columns[7].Width = 70;
dataGridView2.Columns[6].Width = 70;
dataGridView2.Columns[5].Width = 124;
dataGridView2.Columns[4].Width = 81;
dataGridView2.Columns[3].Width = 70;
dataGridView2.Columns[2].Width = 70;
dataGridView2.Columns[1].Width = 124;
dataGridView2.Columns[0].Visible = true;
dataGridView2.Columns[1].Visible = true;
dataGridView2.Columns[2].Visible = true;
dataGridView2.Columns[3].Visible = true;
dataGridView2.Columns[4].Visible = true;
dataGridView2.Columns[5].Visible = false;
dataGridView2.Columns[6].Visible = false;
dataGridView2.Columns[7].Visible = false;
dataGridView2.Columns[9].Visible = false;
xmlFile2.Close();
答案 0 :(得分:2)
这是因为在控件可见之前不会更新数据绑定控件(dataGridView2
)。见this。您可以刷新绑定,例如,通过以编程方式切换到TabPage2
并返回第一个选项卡。
答案 1 :(得分:0)
目前我唯一可以做的就是你没有在标签页2上这样做
dataGridView1.Sort(dataGridView1.Columns[1], ListSortDirection.Ascending);
试
dataGridView2.Sort(dataGridView2.Columns[1], ListSortDirection.Ascending);