2012-01-30 94 views
1

任何人都可以引导我,因为我面临这个问题?c#中的openfiledialogue选择了多个值,但是它选择了最后一个selecteditem作为第一个

我有一个应用程序,我可以通过浏览按钮,现在当用户选择多个文件,虽然它选择它们并添加它们(因为multiselect = true),但它是选择最后选择的项目为什么?

因此导致流程错误。

+2

对于它的价值,这种行为来自通用的“打开文件”对话框(Windows的一部分),而不是来自C#的抽象。自Windows 2000以来,该对话框一直以这种方式运行,甚至可能在此之前。重新排序可能来自内部实现细节,这对微软来说可能并不容易或者不可取。 – 2012-01-30 13:17:26

+0

数组是否相反? – craig1231 2012-01-30 13:17:46

+0

@craig,nope,但最后选择的项目总是在列表顶部重新排序。 – 2012-01-30 13:18:26

回答

1

没有看到相关的代码,问题可能是不同的,但只是为了让你知道,有两种获取输出的方法:使用FileNameFileNames

如果启用MultiSelect但只能看看FileName财产,你只会得到一个文件的名称,

此属性只能是一个选定的文件的名称。如果您想让 返回包含 多选对话框中所有选定文件名称的数组,请使用FileNames

好,两种方式是简化真的,因为你也有SafeFileNameSafeFileNames。我将把研究留给诸如读者的练习。

这可能是我根据评论误解了你的问题,但让我们看看。

+0

我不认为这是问题。 – svick 2012-01-30 13:25:50

+0

@svick可能。顶端的_'item'让我不敢想。但是,如果没有关于订购要求的信息(如您所述),我不确定他们会寻找什么建议。我担心我认为OP不能以其他方式来订购它们(这个问题没有提到)。 – 2012-01-30 13:27:08

+0

@先生Disappointment ..我一直在使用SafeFileNames,当我需要从箱子的多个值,但我主要关心的是要得到正确的订单从openfiledialgue.That如果我选择1,2,3 ,4,5(通过多选),那么它应该反映1,2,3,4,5作为顺序而不是5,4,1,2,4。 – user1100199 2012-01-31 08:47:28

1

你没有说出为什么顺序对你很重要,如果你确实需要它的顺序与用户选择文件相同。

但是,如果你不这样做,你可以简单地按照他们的名字对选定的文件进行排序:这给你可预测的排序顺序是有意义的。

+0

是的顺序意味着很多应用程序用户。 – user1100199 2012-01-30 15:07:06

1

首先,该对话框返回焦点文件名(带有虚线边框的那个,即您最近点击的边框)。因此,如果您点击一个文件名,然后按住Shift并单击列表中的下一个,则最后一个将变为聚焦的一个,并且它首先位于列表中,其次是其他顺序。

如果反过来 - 单击一个,然后按Shift +单击列表中的一个更高的 - 然后它们将按您期望的顺序列出。

同样的事情,如果你不Shift +单击,而是拖动一个矩形围绕你想选择的文件。这不会改变焦点(它将保留在列表中的第一个文件名),所以它们按照它们在列表中显示的顺序进行。

如果用户开始使用键盘(Shift +向上/向下,Ctrl +空格,Ctrl +向上/向下)或使用Ctrl +单击选择不相交范围,但是最后一行是命令完全取决于用户,以及他们如何选择文件。

但是,为什么你在乎的是文件列出的顺序?你应该真的把它当作一个无序的列表来处理(因为用户没有指定顺序的方法 - 这不是对话框的目的,所以它从来没有被设计成可以让你轻松地选择你的选择)。如果你想按字母顺序显示文件名,或者其他类型的顺序,那么只需对你找回的列表进行排序即可。

相关问题