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