9

行の高さを自動的に調整しようとしていますが、非常に難しいことがわかりました。

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

DataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells.

私はまた、この他の方法を使用してそれを作りました:

DataGridView.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders)

また、これを使用して行ごとに:

DataGridView.AutoResizeRow(i, DataGridViewAutoSizeRowMode.AllCells)

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

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

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

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

つまり、短い値ですが、行が異なります。それらを別々の行に表示する必要があり、すべてを一緒に表示することはできません. ただし、行は自動サイズ変更されないため、datagridview には最初のものだけが表示され、他のすべてのものは非表示になります。

それを行う他の方法についてのアイデア。

4

3 に答える 3

5

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

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

これは、グリッドの最初のロードとその後のロードの後に​​メソッドを呼び出す必要があることを意味します。親フォームのコントローラー内でこのコードを呼び出している場合、データバインディングはまだ行われていないため、データは存在しません。

イベントを使用した最初の読み込みのDataBindingComplete場合:

dataGridView1.DataBindingComplete += new
    DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);

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

後でセルを更新するには、自分で最適な場所を見つける必要があります。

于 2012-11-23T16:19:33.607 に答える
4

この問題の解決策を見つけました。グリッドまたは行のオートサイズ プロパティを操作する代わりに、wrapmode を使用してすべてのグリッドのセルに適用する必要がありました。

DataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True

これはすべてのセルに適用され、機能します。

于 2012-11-23T18:41:22.590 に答える