4

私は現在、WES7を実行している組み込みデバイス用のソフトウェアに取り組んでいます。このアプリケーションは、標準の.NET3.5WinFormsプロジェクトです。

要件は、ユーザーがペンドライブまたはネットワークから特定のファイルを参照および選択できる必要がありますが、システムドライブ上のどの場所からも選択できないことです。そのため、標準のOpenFileDialogウィンドウのリンクとボタンを何らかの方法で非表示にして、ユーザーがペンドライブがある場合はペンドライブのみ、またはネットワークプレースリンクが表示されるようにするソリューションを探しています。

私はすでにMSDNや他のフォーラムでも検索していましたが、今までアイデアを見つけることができませんでした。標準のOpenFileDialogでこれを機能させる方法がない場合、指定されたドライブまたは親フォルダーに制限されたファイルを参照するための単純なカスタムコンポーネントはありますか?

4

1 に答える 1

1

ファイルを開くダイアログをカスタマイズするのと同じくらい簡単です。

OpenFileDialog クラスは、ダイアログを構成するための一連のプロパティを公開します。たとえば、初期ディレクトリ、初期フィルタ インデックス、ウィンドウのタイトル、複数のファイルを選択できるかどうか、閉じる前にアプリケーションの現在のディレクトリを復元する必要があるかどうかを選択できます。このクラスは、ユーザーが [開く] ボタンをクリックするたびに、イベント (FileOk と呼ばれる) も発生させます。

OpenFileDialog はシール クラスであるため、派生することはできません。ただし、ファイル ダイアログの動作を可能な限りカスタマイズしたい場合は、抽象クラス FileDialog から派生するま​​ったく新しいクラスを作成する必要があります。この場合、HookProc や RunDialog など、いくつかの強力で保護されたメソッドにアクセスできます。HookProc は、特定の機能を共通ダイアログに追加するダイアログ ボックス フック プロシージャを定義します。

アップデート:

Windows 7 PC では動作しません。例えば:

OpenDialogPlaces o = new OpenDialogPlaces();
//o.Places.Add(18);
//o.Places.Add(5);
//o.Places.Add(6);
o.Init();
o.OpenDialog.ShowDialog();
o.Reset();

左側にすべてを表示します。

ここに画像の説明を入力

以前のバージョンの Windows では機能しました。

ここに画像の説明を入力

もう 1 つ、Microsoft が ComDlg32 の場所を変更したようです。両方の場所を試しましたが、うまくいきませんでした。

ここに画像の説明を入力

于 2013-06-04T04:12:32.783 に答える