亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

虛擬模式下的 Listview - 獲取所選項目的列表

虛擬模式下的 Listview - 獲取所選項目的列表

C#
忽然笑 2022-06-12 10:45:15
當為此 winform 啟用虛擬模式時,有一種方法可以在列表視圖中使用鼠標選擇所有項目。正在使用的工作代碼示例,我現在只能檢索一個選定的文件。在網上找不到太多示例,可以識別為重復但對我來說不是決定性的,或者答案很簡單。        private void FilesFoundList_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)    {        try        {            if (e.ItemIndex >= 0 && e.ItemIndex < ListFilesInfos.Count)            {                try                {                    var acc = ListFilesInfos[e.ItemIndex];                   //with colors                    e.Item = new ListViewItem(new string[] { acc.TagItem, acc.FileName, acc.FilePath.ToString() })                   { Tag = acc,                      BackColor = SearchLabColor(0, Path.GetExtension(acc.FileName.ToString()), acc.FilePath.ToString(), acc.FileName.ToString()),                     ForeColor = SearchLabColor(1, Path.GetExtension(acc.FileName.ToString()), acc.FilePath.ToString(), acc.FileName.ToString()),                     UseItemStyleForSubItems = false                   }; // Set Tag object property to our actual AccountInfo object                }                catch { this.Refresh(); }            }        }        catch        {        }    }    private void ShowItemsVirtual(List<SearchFilesInfo> infos)    {        try        {            FilesFoundList.VirtualListSize = infos.Count; // Set number of items in list view        }        catch { this.Refresh(); }    }    private void FilesFoundList_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)    {        if (FilesFoundList.VirtualMode == true)        {            SelectedFiles.GlobalVar = (e.Item.SubItems[2]).Text.ToString() + (e.Item.SubItems[1]).Text.ToString();        }    }
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

您可以將代碼縮寫為:


List<multiSearchSelect> multiSearchSelect = new List<multiSearchSelect>();


private void FilesFoundList_VirtualItemsSelectionRangeChanged(object sender, ListViewVirtualItemsSelectionRangeChangedEventArgs e)

{

    if (FilesFoundList.VirtualMode == true)

    {

        multiSearchSelect=

            FilesFoundList.SelectedIndices

            .Select(i=> new multiSearchSelect()

            { 

                fileName = FilesFoundList.Items[i].SubItems[1].Text, 

                filePath = FilesFoundList.Items[item].SubItems[2].Text

            });

    }

}


class multiSearchSelect

{

    public string fileName { set; get; }

    public string filePath { set; get; }

}


查看完整回答
反對 回復 2022-06-12
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

我將發布適合我目的的解決方案。我添加了 ItemsSelectionRangeChanged 事件并獲取所選文件列表。


List<multiSearchSelect> multiSearchSelect = new List<multiSearchSelect>();


private void FilesFoundList_VirtualItemsSelectionRangeChanged(object sender, ListViewVirtualItemsSelectionRangeChangedEventArgs e)

        {

            if (FilesFoundList.VirtualMode == true)

            {

                multiSearchSelect.Clear();


                ListView.SelectedIndexCollection col = FilesFoundList.SelectedIndices;

                if (col.Count > 1)

                {

                    foreach (int item in col)

                    {

                        multiSearchSelect.Add(new multiSearchSelect

                        {

                            fileName = FilesFoundList.Items[item].SubItems[1].Text,

                            filePath = FilesFoundList.Items[item].SubItems[2].Text

                        });

                    }

                }

            }

        }


class multiSearchSelect

    {

        public string fileName { set; get; }

        public string filePath { set; get; }

    }


查看完整回答
反對 回復 2022-06-12
  • 2 回答
  • 0 關注
  • 359 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號