3

ListViewをTileviewに設定しています。ListViewの幅は300であり、タイルの幅も同様です。

これは、タイルの数がオーバーフローしてスクロールバーが発生しない場合に正常に機能します。

ただし、オーバーフローした場合、垂直スクロールバーが表示されると、垂直スクロールバーがタイルのリストビュー幅を下げるため、水平スクロールバーも表示されます。リストビューを埋めるためにタイルのサイズを自動変更する方法はありますか?

画像の例を参照してください。

現在何が起こっているか: 代替テキスト

私がしたいこと: 代替テキスト

幅を100%に設定してみましたが、うまくいきません。何か案は?

4

1 に答える 1

5

スクロールバーが表示されたことを直接検出する方法はありません。ただし、間接的な方法として、ClientSizeChangedイベントのイベントハンドラーを記述します。

    private void listView1_ClientSizeChanged(object sender, EventArgs e) {
        listView1.TileSize = new Size(listView1.ClientSize.Width, listView1.TileSize.Height);
    }

また、マシンのDPI設定を変更して、タイルサイズが適切であることを確認します。これにより、通常、コントロールのサイズが変更されます。ClientSize.Widthはあなたの友達です。

于 2010-12-16T21:05:16.327 に答える