8

.NET 3.5 で実行されている古いバージョンの C# アプリケーションをサポートしています。FolderBrowserDialogWindows Vista (32 ビットまたは 64 ビット)での問題が見つかりました。

基本的に、ダイアログは表示されますが、ルートデスクトップノードのみが表示され、それを展開して他のものを表示することさえできませんでした。明らかに、それは使用できません。

膨大な量の試行錯誤の後、残りのセットアップのRootFolderにプロパティを設定することで、最終的に何か役に立つものを得ることができました:

FolderBrowserDialog browsePath = new FolderBrowserDialog();
browsePath.RootFolder = Environment.SpecialFolder.MyComputer;
browsePath.SelectedPath = this.textBoxTo.Text;
browsePath.Description = TextResources.OutputTargetCaption;
browsePath.ShowNewFolderButton = true;

if(browsePath.ShowDialog(this) == DialogResult.OK)
{
    this.textBoxTo.Text = UpdateLocation(browsePath.SelectedPath);
}

これはほとんど機能します。SelectedPathただし、 (定義によりの内容textBoxTo)は現在のユーザーのホームディレクトリ内へのパスであり、そのパスを自動的に参照せず、代わりにマイコンピューターノードを1つに展開して表示するという奇妙な問題がありますレベル。他のパスでも問題ありません。

私の直感と同様に、あなたの最初の推測は権限の問題になると確信しています。そうではないようです。この問題は、標準アカウントと管理者アカウントの両方で、通常どおり管理者として実行しているときに発生します。もちろん、クリーン インストールです。変な権限などはありません。

すべてのデフォルトが現在のユーザーのディレクトリ内にある場合、これはかなり面倒です!

注:これはアプリケーション内でのみ発生します。私が見た限りでは、小さなテスト アプリケーションでは再現できません。

これを引き起こしている可能性のあるアイデアはありますか?

更新: Screenies:
これは私が望む動作です (小さなテスト アプリから取得)
これはデフォルト プロパティで
得られるものです これはルートを My Computer に設定することで得られるものです 注: 最後の画像はSelectedPath、予想通りの画像…

4

3 に答える 3

1

同様の問題がありました。Windows Vista および Windows 7 では、次のコード:

browsePath.RootFolder = Environment.SpecialFolder.MyComputer;

デスクトップを返します。Windows エクスプローラを見ると、ツリーのルートはデスクトップであり、Windows XP のようなマイ コンピュータではありません。この問題を解決するには、代わりにこれを使用します。

browsePath.RootFolder = @"C:\";

すべての Windows コンピュータには C:\ ドライブがあるため、これで問題は解決します。

これがお役に立てば幸いです。

于 2012-11-29T13:01:24.697 に答える
0

ユーザーのプライベート フォルダーのみにアクセスする場合は、次を使用します。

browsePath.RootFolder = Environment.SpecialFolder.Personal

指定したフォルダとその下にあるサブフォルダのみがダイアログ ボックスに表示され、選択可能になります。SelectedPath プロパティは、RootFolder と共に、SelectedPath が RootFolder のサブフォルダーである絶対パス (より正確には、表されるシェル名前空間のサブフォルダーを指している) である限り、ダイアログ ボックスが表示されたときに選択されたフォルダーが何であるかを決定します。ルートフォルダーによる)。

つまり、RootFolder が現在のユーザーのプライベート フォルダー内にない限り、誰かのプライベート フォルダーをスタートアップの selectedPath として入力することはできません。

詳細については、http: //msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.rootfolder.aspxを参照してください。

于 2012-04-03T08:01:38.293 に答える
0

VB.NET コード

Dim fdb As New FolderBrowserDialog
    With fdb
        '.RootFolder = Environment.SpecialFolder.MyComputer
        'this folder don't exists in vista, the my computer folder was renamed to computer (in spanish "mi pc" to "equipo")
        'try with another initial folder
        .RootFolder = Environment.SpecialFolder.Desktop
        'You can set the desktop as home directory because users typically already have shortcuts or the left side menu to navigate
        Dim dr As DialogResult = .ShowDialog
        If _
            dr = DialogResult.OK Or _
            dr = DialogResult.Yes Then _
            If IO.Directory.Exists(.SelectedPath) = True Then _
            Me.textBoxTo.Text = UpdateLocation(.SelectedPath)
    End With

基本的に、別のディレクトリを試して、選択したディレクトリが存在することを確認してください。それでも問題が解決しない場合は、おそらくシステムの障害が原因です。

于 2012-04-21T20:45:10.323 に答える