Как изменить размер столбцов после заполнения dataGridView из источника данных в C #? - PullRequest
0 голосов
/ 15 октября 2011

Я не могу заставить это работать.Вот часть моего кода, чтобы дать вам некоторое представление.

    Scout ScoutInstance = new Scout();
    String sql;
    DataTable table;

    sql = "select * from FD_GROUP";

    table = ScoutInstance.getTableValues(sql);
    dataGridView1.DataSource = table;

    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
    dataGridView1.AutoResizeColumns();

    int width = 0;
    foreach (DataGridViewColumn column in dataGridView1.Columns)
        if (column.Visible == true)
        {
            width += column.Width;
            Console.WriteLine("{0}", column.Width);
        }
    Console.WriteLine("{0}", width);

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

Ответы [ 3 ]

1 голос
/ 15 октября 2011

вы можете попробовать что-то вроде этого ....

private  void setdatagridviewcolumnwidth()
{
   datagridview1.columns[0].width = 100;
   datagridview1.columns[1].width =100;

}

и затем поставить эту функцию после связывания просмотра данных с источником данных (т.е.)

table = ScoutInstance.getTableValues(sql);     
dataGridView1.DataSource = table;
setdatagridviewcolumnwidth() //here you will call set widths method
0 голосов
/ 23 ноября 2011

Об обновлении Макет:

http://msdn.microsoft.com/en-us/library/system.windows.uielement.updatelayout.aspx

"Гарантирует, что все визуальные дочерние элементы этого элемента должным образом обновлены для макета."

"все рассчитанные размеры будут проверены."

«Вы должны вызывать UpdateLayout, только если вам абсолютно необходимы обновленные размеры и позиции» ... в вашем случае.

0 голосов
/ 21 ноября 2011

Вы должны обновить сетку, чтобы отображались правильные значения.В противном случае он не будет обновляться, пока вы не покинете свою сабвуфер, поскольку обновление Layout находится в очереди.Поэтому используйте:

dataGridView1.UpdateLayout()

После AutoResizeColumns, и вы получите свои значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...