8

dataGridView 列の幅をコンテンツに合わせて自動的に調整し、同時にユーザーがサイズ変更できるようにすることが可能かどうか疑問に思っていますか?

ここで私がこれまでに試したこと:

dataGridView.AllowUserToResizeColumns = true;
dataGridView.Columns[0].AutoSizeMode=DataGridViewAutoSizeColumnMode.DisplayedCells;
dataGridView.Columns[0].Resizable = DataGridViewTriState.True;

ただし、列のサイズを手動でサイズ変更することはまだできません。

誰かがすでにこの問題に直面している場合、または何か考えがある場合はお知らせください。

ありがとう。

4

6 に答える 6

18

私は最終的に、私が望んでいたことを行う方法を見つけました。

アイデアは

  • dataGridViewコンテンツに合わせて列自体のサイズを変更してから、
  • を変更し、AutoSizeColumnMode保存した値で幅を設定します。

コードは次のとおりです。

dataGridView.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
int widthCol = dataGridView.Columns[i].Width;
dataGridView.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dataGridView.Columns[i].Width = widthCol;

これが役立つことを願っています。

于 2013-07-19T13:45:10.260 に答える
1

上記のコードに基づいて構築し、すべての列に対して反復処理を行い、DataGridView

//initiate a counter
int totalWidth = 0;

//Auto Resize the columns to fit the data
foreach (DataGridViewColumn column in mydataGridView.Columns)
{
    mydataGridView.Columns[column.Index].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
    int widthCol = mydataGridView.Columns[column.Index].Width;
    mydataGridView.Columns[column.Index].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    mydataGridView.Columns[column.Index].Width = widthCol;
    totalWidth = totalWidth + widthCol;
}
//the selector on the left of the DataGridView is about 45 in width
mydataGridView.Width = totalWidth + 45; 
于 2016-04-05T11:18:58.780 に答える
0

明らかでないこと (私にはわかりませんでした) は、AutoSizeMode の使用は、サイズを管理する必要があることを意味するため、ユーザーがサイズ変更を実行しない (できない) ことを意味します。だから私が試してみたのは、各列またはほとんどの列に DataGridView.AutoResizeColumn (1 回限りのサイズ変更を行うことに注意してください) を使用し、DataGridView.AllowUserToResizeColumns を true に設定することです。おそらく他にもバリエーションがありますが、重要なことは、AutoSizeMode の使用は、ユーザーによるサイズ変更の許可と相互に排他的であるということです。

于 2016-12-07T23:47:15.623 に答える