2

ユーザーが Windows フォーム コンテナー内の数百または数千のアイテムをスクロールできるようにするための一般的な設計はありますか? 例: 電子メール クライアントを作成すると、ユーザーは、各電子メールに 1 つずつ、10,000 を超えるメッセージ "行" をスムーズにスクロールする印象を受けますが、実際には表示される直前までレンダリングされません。同様に、巨大な画像をスクロールするには、画像を小さな断片に並べて表示する必要がありますが、それを表示するコードはどのように構成されているのでしょうか?

4

2 に答える 2

2

既に述べたように、おそらくVirtualModeが最適なソリューションです。 CodeProject に使用例があります

フォーム作成時に仮想モードを初期化:

private void Form1_Load(object sender, EventArgs e)
        {
            listView1.VirtualMode = true;       // switching virtual mode on
            listView1.VirtualListSize = 1000000000;     // give it 1 million lines
        }

RetrieveVirtualItem次に、イベントを割り当てて処理します。

private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
   {
       ListViewItem lvi = new ListViewItem();   // create a listviewitem object
       lvi.Text = nt.MakeText(e.ItemIndex);         // assign the text to the item
       ListViewItem.ListViewSubItem lvsi = new ListViewItem.ListViewSubItem(); // subitem
       NumberFormatInfo nfi = new CultureInfo("de-DE").NumberFormat;
       nfi.NumberDecimalDigits = 0;
       lvsi.Text = e.ItemIndex.ToString("n", nfi);  // the subitem text
       lvi.SubItems.Add(lvsi);          // assign subitem to item

       e.Item = lvi;        // assign item to event argument's item-property
   } 
于 2013-08-13T03:56:32.727 に答える