12

私は C# で winforms アプリケーションに取り組んでいます。私が達成したいのは、次のコードを使用しているユーザーからファイルを取得することです:

OpenFileDialog dlg = new OpenFileDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
    string sFileName = dlg.FileName;
    //my code goes here
}

現在、すべて正常に動作していますが、同じダイアログ ボックスに 3 つのラジオ ボタンを配置したいと考えています。つまり、このダイアログ ボックスから 2 つのものが得られます。

string sFileName = dlg.FileName; //same as in case of traditional dialog box
//some thing like this which tells which radio button is selected:
dlg.rbTypes.Selected

どうすればこれを達成できますか?

4

2 に答える 2

11

はい、可能です。私は で同じ種類のカスタマイズをSaveFileDialog 成功させました。これは非常に興味深いものです。

次のリンクに従ってください。

http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx

http://www.codeproject.com/KB/cs/getsavefilename.aspx

http://www.codeproject.com/KB/dialog/CustomizeFileDialog.aspx

また、私自身の質問も役立ちます:

SaveFileDialog の [保存] ボタンと [キャンセル] ボタンのデフォルトの配置を変更する

GetSaveFileName を使用して SaveFileDialog を作成するときに上書きプロンプトを停止する方法

これには を使用するWinAPI必要があり、ShowDialog.netGetOpenFileNameOpenFileDialog. GetOpenFileNameがウィンドウを作成しますOpenFileDialog。( http://msdn.microsoft.com/en-us/library/ms646927%28v=vs.85%29.aspxを参照してください)。これは、HookProc プロシージャを記述し、そのWM_INITDIALOG, CDN_INITDONE内部などのイベントをキャッチすることと合わせて、必要なことを行うのに役立ちます。

ラジオ ボタンなどを追加するには、CreateWindowExおよびSendMessage...などの Windows 関数を呼び出す必要があります。

2番目のリンクには、カスタマイズへの正確な方向性があります...

説明を求めてください...

于 2011-05-23T05:25:26.997 に答える
3

XP では、フック プロシージャ メソッドと GetOpenFileName API を使用する必要があります。Vista 以降では、検索機能がないなど、機能が制限された恐ろしいファイル ダイアログが表示されます。Vista では IFileDialog を使用し、ダイアログをカスタマイズするには IFileDialogCustomize インターフェイスが必要です。新しい Vista ダイアログは COM インターフェイスとして公開されているため、.net で簡単に使用できます。

于 2011-05-23T06:52:08.977 に答える