2012-11-23 20 views
9

私は行の高さを自動的に調整しようとしています。Datagridviewの行の自動サイズ変更

私はすでに、このプロパティを設定した

DataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells. 

私もそれが、この他の方法で使用して作った:

DataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders) 

そしてまた、この使用することにより、行によって行:

DataGridView.AutoResizeRow(i, DataGridViewAutoSizeRowMode.AllCells) 

さらに、行の高さを大きな値にハードコーディングしても、どちらも機能しませんでした。すべての行がデフォルトの高さで表示されます。

これらはいずれも機能しませんでした。私はオプションが不足しています。

DataGridviewのほとんどの行のサイズを変更する必要はありません。しかし、そのうちの1つは次のような値で埋められています:

"a" + "\ n" + "c" + "\" "" d "+" e "

私は、短い値だが異なる行を意味する。私はそれらを別々の線で表示しなければならず、すべて一緒に表示することはできません。 しかし、行が自動サイズ変更されないため、datagridviewには最初のものだけが表示され、他のすべては非表示になっています。

これ以外の方法については、

答えて

3

私はこの問題の解決策を見つけました。 グリッドまたは行の自動サイズ変更のプロパティで作業するのではなく、すべてのグリッドのセルに適用するにはwrapmodeを使用する必要があります。

DataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True

これは、すべてのセルに適用され、それが動作します。

+0

あなたが解決策を見つけたらうれしく思います(私はすでにラップモードを設定していて、複数のラインがグリッドセル領域をオーバーフローしているのを見ていました)。私はそれが別の問題(データの長さを増やすセルのいずれかを更新する場合は、サイズ変更が自動的にトリガされません)が正しいので、私の答えを残すつもりです。 –

+2

ああ - 答えとしてマークして、質問が答えられないリストから落ちるようにしてください。 –

5

データが変更されたの後に、サイズ変更メソッドを呼び出す必要があります。 DataGridView.AutoResizeRows()のMSDN記事から:

行の高さは、メソッド呼び出しごとに1回だけ調整されます。後で行の内容が に変更された場合、行は自動的に調整されません。

これは、最初とその後のグリッドの読み込み後にメソッドを呼び出す必要があることを意味します。親フォームのコントローラ内でこのコードを呼び出す場合、データバインディングはまだ行われていないので、データは存在しません。あなたは最高の場所を自分で見つける必要があります細胞に後で更新について

dataGridView1.DataBindingComplete += new 
    DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete); 

void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCells); 
} 

DataBindingCompleteイベントを使用して、最初のロードについては

+0

現在のアプローチがうまくいかない理由は、フォームコンストラクタまたはonloadイベント内にコードがある可能性が高いからです。 –

+0

いいえ、私は実際にgridsourceがdatagridviewに設定された後にそれを行います。既に人口が集まっています。それは私がやる最後のことです。 – monican

+0

@ user1062568あなたはいつですか?どんなイベントハンドラで?ソースが設定された後であっても、それだけでは十分ではありません。データバインディングが完了した後にソースを設定する必要があります。たとえば、ソースを設定して、フォームコンストラクタでresize allを呼び出した場合、これは高さを変更しません。 –

関連する問題