数据网格视图和tabcontrol C#的奇怪问题
我有一个奇怪的问题。 我有一个带有两个TabPages
的TabControl
。 每个页面都有一个datagridview
。 两个datagridviews
都填充了XML
文件。
我想将AutoSizeColumnsMode
设置为“ Fill
”两个DataGridViews
。 我想在我的代码中设置列的宽度。
对于TabPage1
,一切正常,但TabPage2
上的DataGridView
设置宽度会抛出NullReferenceException
。
我真的没有得到它,因为我做了与datagridview1
相同的事情,并且工作正常,但datagridview2
抛出exception。 此外,如果我选择任何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();
这是因为在控件可见之前不会更新数据绑定控件( dataGridView2
)。 看到这个 。 您可以刷新绑定,例如,通过以编程方式切换到TabPage2
并返回到第一个选项卡。
我现在唯一可以做的就是你没有在标签页2上这样做
dataGridView1.Sort(dataGridView1.Columns[1], ListSortDirection.Ascending);
尝试
dataGridView2.Sort(dataGridView2.Columns[1], ListSortDirection.Ascending);
- 无法在ServiceModel客户端配置部分中找到名称为“xxxxx”且合同“yyy”的端点元素
- 来自2 ComboBox的类别影响第三个Combobox for datagridview with SQL
- 如何序列化从Dictionary派生的类
- Windows 7上的32位应用程序的Environment.SpecialFolder.ProgramFiles值?
- 我可以在C#/ WPF中获取绑定对象的Type()(即使绑定值为null)?
- Windows Phone 7:如何在XAML中解析Bezier Path字符串?
- KnockoutJS并将单个对象绑定到viewmodel
- fire(call)方法,当scrollviewer滚动到它的结尾时
- LINQ to Entities无法识别方法’System.String StringConvert(System.Nullable`1 )