自定义OpenFileDialog

| 我正在使用C#开发Winforms应用程序。我想要实现的是从使用以下代码的用户那里获取文件:
OpenFileDialog dlg = new OpenFileDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
    string sFileName = dlg.FileName;
    //my code goes here
}
现在,一切正常,但是我想在同一个对话框中放置3个单选按钮,这意味着我现在将从该对话框中得到两件事
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
我该如何实现?     
已邀请:
是的,这是可能的,我成功地对
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
,并且需要自己调用其中的ѭ5calling Windows函数来编写
ShowDialog
方法,而不是调用.net \的
OpenFileDialog
GetOpenFileName
将创建窗口
OpenFileDialog
。 (请参阅http://msdn.microsoft.com/en-us/library/ms646927%28v=vs.85%29.aspx)。这与编写HookProc过程以及在其中捕获诸如as9ѭ之类的事件一起,将有助于您执行所需的操作。 要添加单选按钮等,您必须调用functions10ѭ和
SendMessage
等Windows功能。 第二个链接提供了到定制的确切方向... 要求任何澄清...     
在XP上,您需要使用挂钩过程方法和GetOpenFileName API。在Vista及更高版本上,这将导致使用有限实用程序(例如,没有搜索。在Vista上,您应该使用IFileDialog并自定义对话框,您需要IFileDialogCustomize接口。由于新的Vista对话框公开为COM接口,因此在.net中使用起来非常容易。     
试试这个代码:
private void Browse_Click(object sender, EventArgs e)
{
    var fdlg = new OpenFileDialog();
    fdlg.Title = \"Open a file\";
    fdlg.InitialDirectory = \"c:/\";
    fdlg.Filter = \"all files(*.*)|*.*|all files(*.)|*.*\";
    fdlg.FilterIndex = 2;
    fdlg.RestoreDirectory = true;
    if (fdlg.ShowDialog() == DialogResult.OK)
    {
        filetxt.Text = fdlg.FileName;
    }
}
    

要回复问题请先登录注册