Вопрос по tabcontrol, c#, datagridview – Странная проблема с сеткой данных и табулированием C #

1

У меня странная проблема. у меня есть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();
Это означает, что столбец не существует. Вы получаете данные отFile2.xml? Другими словами, действительно ли ds2 содержит загруженные данные? Michael Todd
Да, я получаю данные обратно из File2.xml. Проблема в том, когда я пытаюсь изменить ширину столбцов. Даже изменение видимости работает. Michal_Drwal

Ваш Ответ

2   ответа
0

что я могу увидеть в данный момент, это то, что вы не делаете этого на вкладке 2.

dataGridView1.Sort(dataGridView1.Columns[1], ListSortDirection.Ascending);

пытаться

dataGridView2.Sort(dataGridView2.Columns[1], ListSortDirection.Ascending);
Это не важно и не имеет смысла. Michal_Drwal
2

dataGridView2) не обновляется, пока элемент управления не станет видимым. Видетьэто, Вы можете обновить привязку, например, программно переключившись наTabPage2 и вернемся к первой вкладке.

Большое спасибо! Это прекрасно работает. Michal_Drwal

Похожие вопросы