如何从ListView中获取所选项目? [英] How to get selected items from ListView?

查看:59
本文介绍了如何从ListView中获取所选项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

< pre>我使用winforms创建了一个桌面应用程序,该文件从本地驱动器获取文件并在右侧的winforms中显示。下一步,我希望用户能够使用
ListViewItem Selected Files功能从这个列表中选择多个文件:



ListViewItem [] SelectedFiles = fileListView1.SelectedItems.Any()



接下来,我已经编写了代码来执行一个函数,以便在用户选择之后优化每个文件的分辨率一个文件或多个文件。 
$


但是我需要做些什么才能修改此代码,以便用户从显示的列表中选择一个或多个文件在右边?以下是一些代码,您可以在此应用程序的上下文中看到它:



感谢您的提前帮助!







    private void combinePDFsBtn_Click(object sender,EventArgs e)

  &NBSP; &NBSP; &NBSP; { 

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; DirectoryInfo root = new DirectoryInfo(folderTreeView.CurrentDirectory.FullName);




  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; ListViewItem [] SelectedFiles = fileListView1.SelectedItems.Any()



$
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;列表与LT; DirectoryInfo的> directories = new List< DirectoryInfo>();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; IEnumerable的< DirectoryInfo的> dirs = root.GetDirectories();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; foreach(目录中的目录信息路径)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; directories.Add(path);



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; DynamicProgressForm prog = new DynamicProgressForm(0,directories.Count);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; prog.StatusText ="组合文件夹中的PDF:{2} \\\\ n的{0}({3}%完成) - 约。剩余{4}秒";"
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Cursor = Cursors.WaitCursor;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Application.DoEvents();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; prog.Show(this);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Application.DoEvents();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; prog.Value ++;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Application.DoEvents();



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; DirectoryInfo dest = root.CreateSubdirectory(" Optimized Files");

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; StitchFolder(root.FullName,root,dest);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; // foreach(目录中的DirectoryInfo路径)

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; // {

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //&NBSP; &NBSP; StitchFolder(root.FullName,path,dest);

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //&NBSP; &NBSP; prog.Value ++;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //&NBSP; &NBSP; Application.DoEvents();

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; //}



  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; Cursor = Cursors.Default;

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; prog.Close();

  &NBSP; &NBSP; &NBSP; }< /预>

解决方案

ChinkyP您好,


<跨度ID = "x_x_x_x_x_x_result_box" LANG =" en"style ="">与comboBox不同,listView的选定项目将使用

listView1.CheckedItems属性


所以,如果你想得到所有所选项目请尝试:


1,将listView的CheckedBoxes属性设置为true。


2,获取所有选定项目:

 private void button1_Click(object sende r,EventArgs e)
{
for(int i = 0;我< this.listView1.CheckedItems.Count;我++)
{
如果(this.listView1.CheckedItems [I] .Checked)
{
richTextBox1.Text + = this.listView1.CheckedItems [I]。文本+环境。新队;
}
}
}


问候,


Frankie


<pre>I have created a desktop app using winforms that fetches files from a local drive and displays in winforms on the right hand side. As a next step, I'd like for the user to be able to select multiple files from this list using something like the ListViewItem Selected Files function:

ListViewItem[] SelectedFiles = fileListView1.SelectedItems.Any()

Next, I have already written code to execute a function to optimize each files resolution after the user selects either one file or multiple files. 

However what do I need to do to modify this code so it allows the user to select one or multiple files from the list displayed to the right? Here is some of the code so you can see it in context of this app:

Thanks for your help in advance!



   private void combinePDFsBtn_Click(object sender, EventArgs e)
        { 
            DirectoryInfo root = new DirectoryInfo(folderTreeView.CurrentDirectory.FullName);


            ListViewItem[] SelectedFiles = fileListView1.SelectedItems.Any()


            List<DirectoryInfo> directories = new List<DirectoryInfo>();
            IEnumerable<DirectoryInfo> dirs = root.GetDirectories();
            foreach (DirectoryInfo path in dirs)
                directories.Add(path);

            DynamicProgressForm prog = new DynamicProgressForm(0, directories.Count);
            prog.StatusText = "Combining PDFs from folder: {0} of {2} \r\n({3}% complete) - Approx. {4} seconds remaining";
            Cursor = Cursors.WaitCursor;
            Application.DoEvents();
            prog.Show(this);
            Application.DoEvents();
            prog.Value++;
            Application.DoEvents();

            DirectoryInfo dest = root.CreateSubdirectory("Optimized Files");
            StitchFolder(root.FullName, root, dest);
            //foreach (DirectoryInfo path in directories)
            //{
            //    StitchFolder(root.FullName, path, dest);
            //    prog.Value++;
            //    Application.DoEvents();
            //}

            Cursor = Cursors.Default;
            prog.Close();
        }</pre>

解决方案

Hi ChinkyP,

Unlike comboBox, the listView's selected items are to be retrieved using listView1.CheckedItems property:

So if you want to get all of the selected items, please try this:

1, Set the CheckedBoxes property of the listView to true.

2, Get all selected items with:

        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < this.listView1.CheckedItems.Count; i++)
            {
                if (this.listView1.CheckedItems[i].Checked)
                {
                    richTextBox1.Text += this.listView1.CheckedItems[i].Text + Environment.NewLine;
                }
            }
        }

Regards,

Frankie


这篇关于如何从ListView中获取所选项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆