2009-08-14 22 views
1

私はSaveFileDialogを使用する必要があるアプリケーションを構築しています。問題は、ユーザーがSaveFileDialogの一部を使用しないように制限したいということです(たとえば、ファイルの名前を編集したくないなど)。 WindowsフォームSaveAsDialogを使用してこれを行うことは非常に難しいと聞いてきました。ネイティブコードでこれを行う方法を知っていますか?完全なundestandable例がありますか(私はWindows APIを使用したことがないので、例全体が必要です)?SaveFileDialogの一部を無効にする

PS。 UIを一貫性を保つためには、実際にはSaveFileDialogを使用する必要があります。

+1

なぜこれをやりたいのですか?私はあなたがSaveFileDialogを提供し、ファイル名を指定することを許可しない理由は不明です。すぐに維持したいUIの一貫性を破っています。 – Lazarus

答えて

-1

ご自身でSavefiledialogを作成してください。

Savefiledialogとほぼ同じで、TextBoxの代わりにLabelという名前のフォームを作成するだけです。

+0

SaveFileDialogは継承できません。 – ThePower

+0

SaveFileDialogはフォームではなく、アンマネージAPI上のファサードです。 – nothrow

+0

最終クラスでもなく、API上のファサードでもない人は、標準コンポーネントのように見え、動作するカスタムダイアログボックスを書くことができません。これは良い答えです。 –

5

ファイル名が固定されていて、ユーザーが別の場所に移動する場合は、代わりにFolderBrowserDialogを使用してください。 IMHO、これも一貫しています。

+0

私は、ダイアログの一部を無効にする方法の問題にどこから答えたのか分かりません。質問の前提を否定する場合は、答えではなくコメントを残してください。 –

+0

質問はUIの一貫性に関するものでもあるので、私は質問の前提を否定するとは思わない。 私の視点から見たConsistencyは、タスクに適切なツールを使用しており、フィットするように曲げる必要がある他のものではありません。 –

+0

@incredible_Honk、ケネディ氏は、彼が答えに寄与せずにペーストすることを好む株式コメントを持っているようだ。 – Lazarus

4

共通のファイル保存ダイアログを使用したいが、ファイル名を読み取り専用にしたい場合は、おそらくネイティブコードを呼び出す必要があります。フックを使用して多くのカスタマイズを提供できます。私は古いスタイルのWindows APIがやっていない

Customizing Common Dialog Boxes

Open and Save As Dialog Boxes

GetSaveFileName FunctionUsing GetSaveFileName from managed code

OPENFILENAME StructureUsing OPENFILENAME from managed code

:あなたは、いくつかのWindows APIのを勉強する必要があります長い間、次のアイデアはちょうどそれです:アイデア。おそらくあなたはフックを作成することができ、WM_INITDIALOGにファイル名で編集コントロールを見つけることができます。それはedt1と名付けられているようです。おそらく、コントロールのウィンドウスタイルを変更して読み取り専用にすることができます。

ここで提供されるその他の回答のいくつかは、[名前を付けて保存]ダイアログボックスをハッキングするよりも優れた選択肢です。

関連する問題