openfiledialog 选择多个文件

private void btn_SelectFile_Click(object sender, EventArgs e)
{
int i;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
for (i = 0; i < openFileDialog.SafeFileNames.Length; i++)
{
listBox2.Items.Add(openFileDialog.SafeFileNames[i]);
}
}
}
listbox显示文件名,文件非常多,在打开openFileDialog后,需要选择第一个文件,然后再按住shift选择最后一个文件,然后点打开,这样listbox创建的items顺序就不对了,如果是按shift选的,那listbox里第一条是所选择的最后一个文件,第二个则才是所选择的第一个文件,然后第三个开始正常。但是!是用鼠标圈选的这些文件就没事,我想问题出在safefileNames[i]这个东西,i=0时应该是鼠标所点击的具有焦点的那个文件,即最后一个文件,i=1时应该是倒数第二次点的文件,即第一个文件,如下图:请教有没有什么好的解决办法能让其正常排序?

用vs2012试了一下,没有出现你提到的问题啊

     private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "所有文件|*.*";
            dialog.Multiselect = true;
            dialog.SupportMultiDottedExtensions = true;
            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                listBox1.Items.Clear();

                foreach (string s in dialog.SafeFileNames)
                {
                    listBox1.Items.Add(s);
                }
            }
        }

追问

你用shift选一下,别用ctrl

追答

嗯,
我测试了,选中文件的次序用Ctrl+鼠标点击、鼠标拖拉连续选择、Shift+鼠标点击,都没有问题。在列表框中显示的次序,与在文件夹中文件排列的次序是一致的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-01
你sort()一下再加到Listbox中去追问

求详解。求真相。求教导。

追答

集合有sort()方法,调用后可以进行默认排序,你这里全是文件名,也就是string类型,那么sort()以后就会按照从小到大的顺序排了
var names= openFileDialog.SafeFileNames.ToList();
names.Sort();//这里就排序了
//执行加入listbox操作

追问

不行啊,不是C#就不会了,我初学者,而且数组也没有sort方法。

追答

数组没有,但是数组是可以转成集合的啊

追问

弄明白了,谢谢啊,原来listbox这个空间自带sorted属性。

openfiledialog 选择多个文件
private void button1_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "所有文件|*.*"; dialog.Multiselect = true; dialog.SupportMultiDottedExtensions = true; if (dialog.ShowDialog() == System.Windows.Forms.DialogResul...

winforms 的openFileDialog1如何才能实现 选择文件夹里面的多个<文件名...
openFileDialog有属性指示是选单个文件还是多个的 你自己找找,就在属性面板上 改成选多个以后可以点出openFileDialog.fileNames 然后用一个数组接收,或一个个取出来直接填充到LISTBOX 提示到此为止,很容易实现,自己试试

Openfiledialog 能否指定多种文件类型?
可以 cdl.Filter ="Jpg文件|*.jpg|Gif文件|*.Gif|bmp文件|*.bmp|"

C#的OpenFileDialog怎么用
(2) 在程序设计窗体中添加一个Label控件,设置其Text属性为“您选择的文件:”;再添加一个TextBox控件,保留其默认属性即可;再添加一个Button控件,设置其Text属性为“选择文件”。调整窗体和控件的大小以适合窗口。(3) 向程序设计窗体中添加一个OpenFileDialog控件,在属性对话框中设置其Filter属性为...

openFileDialog1.Multiselect =false是什么意思
比如说音乐播放器,点打开音乐文件,可以同时选择多个文件(CTRL+单击),然后一起打开.true就这个作用.false就只能选择一个文件打开.OpenFiles(),返回的是个数组Stream[],如果Multiselect =false,数组元素就是1个.OpenFile(),打开的文件,如果是多选,这里返回的仅仅是第一个文件 FileNames ,返回数组string[]...

易语言怎样才能选择多个文件啊?
英文名称:OpenManyFileDialog 显示一个文件打开对话框,允许用户选择或输入多个所需要打开的已存在文件,返回用户所选择或输入后的结果文本数组。如果用户未输入或按“取消”按钮退出,则返回一个成员数为0的空文本数组。本命令为初级命令。参数<1>的名称为“标题”,类型为“文本型(text)”,可以被省略...

如何设置openfilename选取多个文件,依然存在文件名
OpenFileDialog f = new OpenFileDialog();f.Multiselect = true;if (f.ShowDialog() == DialogResult.OK){ foreach (string file in f.FileNames){ } }

vb.net2008 用OpenFileDialog打开多个文件并把全部文件的路径添加到Li...
Dim opfile As New OpenFileDialog '声名新open 窗口 Dim filetmp() As String '存文件名 opfile.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*" '添加过滤文件 opfile.Multiselect = True '多开文件打开 If opfile.ShowDialog = Windows.Forms.DialogResult.OK Then '如果打开窗口OK...

C#中如何把打开文件中选择的多个文件依次显示在窗体上
OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = true; if (ofd.ShowDialog() == DialogResult.OK) { listBox1.Items.AddRange(ofd.FileNames); } 既然你选择的多选,肯定要用其他的属性的,ofd.FileNames 也可以经过你自己处理在显示,处理数组的方式你自己定,以...

C#中如何使用对话框查找并打开一个或多个文件,代码怎么写?请高手指教...
OpenFileDialog o = new OpenFileDialog();o.Multiselect = true;o.Filter = "*.txt|*.txt|*.*|*.*";if (o.ShowDialog() == System.Windows.Forms.DialogResult.OK){ \/\/o.FileNames选择的结果,多个文件路径及文件名 \/\/o.FileName选择的结果,单个文件路径及文件名 } ...

相似回答