如何解决自定义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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。