0

私は今、この状況に対処しています。ご存知のように、WPFコントロールを Auto its size (Width or Height)に設定できるため、これを行うと、コントロールは垂直スクロールバーに表示されません。

Windows フォームで同じ動作が必要ですDataGridView。このコントロールには多くの行があり、コントロールが垂直スクロールバーなしで実際のサイズを表していることを知りたいです。この機能を実行するにはどうすればよいですか?

ここに画像の説明を入力

現時点でDataGridViewは、固定サイズ (600px)になっています。

4

2 に答える 2

1

スクロールバーが表示されないように初期の高さが設定されていると仮定すると、これらのイベント ハンドラーを追加すると、行が追加または削除されたときに高さを調整できます。

private void dataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    int height = 0;
    for (int i = e.RowIndex; i < (e.RowIndex + e.RowCount); i++)
        height += dataGridView.Rows[i].Height;

    dataGridView.Height += height;
}    

private void dataGridView_RowsRemoved(object sender, DataGridViewRowsAddedEventArgs e)
{
    int height = 0;
    for (int i = e.RowIndex; i < (e.RowIndex + e.RowCount); i++)
        height += dataGridView.Rows[i].Height;

    dataGridView.Height -= height;
}

補足として、プログラムでこの機能を使用しないことをお勧めします。自動的にサイズ変更するリストボックスは、一般的に UI 設計の選択肢として適切ではありません。このコントロールで何を達成しようとしていますか? ここでやろうとしていることを行うには、もっと効果的な方法があるかもしれません。

于 2013-01-12T18:38:08.900 に答える
0

Dockそのプロパティを設定してみてください。次のように呼び出されると仮定します。

dataGridView1.Dock = DockStyle.Left;

明らかに、グリッドには引き続きスクロールバーが表示されますが、その高さはコンテナーの高さに合わせられます。

于 2013-01-12T18:17:54.237 に答える