0

約 100 項目の ListView があります。過去から選択した項目があり、下にスクロールして別の項目を見つける必要がありますが、その間に更新が発生し、最後に選択した項目に自動的にスクロールして戻ります。

現在スクロールしている場合、どうすればそれをオフにするか、スクロールしないほうがよいでしょうか?

返信ありがとうございます:)

4

2 に答える 2

0

これが役立つかどうかはわかりませんが、ここでは、新しいアイテムが追加されて並べ替えられたときに、選択したアイテムにスクロールして戻るという問題がない設定です。ただし、並べ替え設定を使用し、並べ替えまたは更新を呼び出しません。

新しいフォームを作成し、そこに ListView と Timer を配置します。ListView では、これらのプロパティのみを変更します。

  • ビューを詳細に設定
  • [列] をクリックして、1 つの列を追加します (幅を調整して幅を広げます)。
  • 並べ替えを昇順に設定
  • タイマーの有効化を true に設定します
  • 間隔を 2000 (2 秒) に設定
  • Tick イベントをダブルクリックしてハンドラを作成します

次のコードを追加します

public Form1()
{
    InitializeComponent();

    for (int x = 0; x < 100; x++)
    {
        listView1.Items.Add("Item #" + x);
    }
}

private int y = 10;
private void timer1_Tick(object sender, EventArgs e)
{
    listView1.Items.Add("Item #" + y + "b");
    y += 10;
}

これを実行すると、任意のアイテムを選択してどこにでもスクロールでき、新しいアイテムが追加されたときに選択したアイテムに戻ることはありません。ただし、追加する項目が上にある場合は1行下にスクロールします...

おそらく、これで十分に近くなり、必要なものを手に入れるためにさらに遊んでみることができます.

しかし、それは何とかWin32 APIを使用してListViewコントロールをサブクラス化することなくできる最善の方法です。

于 2013-02-26T21:33:06.113 に答える