- PR -

DataGridViewで列幅が自動調整されない

1
投稿者投稿内容
NEO
大ベテラン
会議室デビュー日: 2005/10/02
投稿数: 104
投稿日時: 2007-02-10 00:46
VS2005です。

DataGridViewの各列のAutoSizeModeプロパティをDataGridViewAutoSizeColumnMode.ColumnHeder値(列ヘッダに合わせて自動調整される)にしているのに、ヘッダテキストの内容を変えると、列幅が変わらずヘッダが改行されてしまいます。
MSDNを見ると、「列の幅をプログラムによって調整するには、DataGridView コントロールの AutoResizeColumn メソッドまたは AutoResizeColumns メソッドを使用するか、列の Width プロパティを設定します。 」
と書いてありますが、AutoResizeColumn メソッドの説明を見ると、
「列の内容が変更されるたびに、列のサイズが自動的に変更されるように設定するには、AutoSizeColumnsMode プロパティまたは列の AutoSizeMode プロパティを使用します。」と書いてあります。

どうも矛盾しているような…。
結局どういうことなんでしょうか?
列の AutoSizeMode プロパティを使ってダメだったのですが、
AutoResizeColumns メソッドを使えば、うまくいくのでしょうか?
イシバシ
常連さん
会議室デビュー日: 2007/02/06
投稿数: 20
お住まい・勤務地: 浦安の隣
投稿日時: 2007-02-10 04:15
今晩は。
以下のようにやったら、初期表示とbutton1クリック時双方とも、ちゃんと列幅調整
されましたけど...
コード:
public Form1()
{
	InitializeComponent();
	for (int i = 0; i < this.dataGridView1.Columns.Count; i++)
	{
		this.dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.ColumnHeader;
	}
	this.dataGridView1.Columns[0].HeaderText = "ABCDE";
	this.dataGridView1.Columns[1].HeaderText = "ABCDEFGH";
	this.dataGridView1.Columns[2].HeaderText = "ABCDEFGHIJK";	
}

private void button1_Click(object sender, EventArgs e)
{
	this.dataGridView1.Columns[0].HeaderText = "ABCDEFGHIJK";
	this.dataGridView1.Columns[1].HeaderText = "ABCDEFGH";
	this.dataGridView1.Columns[2].HeaderText = "ABCDE";
}



他のところで列幅変えたりしてませんか?
引用:

AutoResizeColumns メソッドを使えば、うまくいくのでしょうか?


こういうのはやってみてから質問した方がいいですよ。
NEO
大ベテラン
会議室デビュー日: 2005/10/02
投稿数: 104
投稿日時: 2007-02-10 13:37
イシバシさんとほぼ同じことをやってますが、
違うのは、初期処理のところで、AutoSizeModeプロパティの設定より前にヘッダテキストを設定していることと、ヘッダテキストの設定のタイミングで列幅も設定していることです。

気になっているのですが、列幅の自動調整は、DataGridView自体の幅の範囲内で行なわれるということはないでしょうか?
NEO
大ベテラン
会議室デビュー日: 2005/10/02
投稿数: 104
投稿日時: 2007-02-13 22:08
ヘッダテキストにスペースが入っていると、自動調整されませんね。
バグなんでしょうか?

とりあえず、自動調整はあきらめます。
1

スキルアップ/キャリアアップ(JOB@IT)