我想创建一个保存文件对话框,当您按下自定义功能区按钮并将文件名和initialdirectory属性设置为特定值时,该对话框将打开。现在我在表单中创建该对话框。在设计器中,它显示在底部窗格中,因为它不是直接在表单上绘制的项目,或者我在此问题中被告知:Visual Studio Designer Bottom Pane
我的问题是:我应该删除表单并自己创建saveFileDialog吗?或者,如果我保留表单,当我调用form.ShowDialog()时,它会显示我在设计器中添加的saveFileDialog吗?或者我需要调用saveFileDialog.ShowDialog()? (我不能在课外做)。我不确定实现自定义saveFileDialog的正确方法是什么。我曾被告知创建一个表单,现在看来我不应该使用表单。
答案 0 :(得分:2)
我认为您绝对不需要通过表单使用保存对话框;
在您的功能区代码中添加以下内容:
在顶部
using System.Windows.Forms;
然后这个功能
/// <summary>
/// Return selected file from winform save dialog
/// </summary>
/// <param name="fn">The filename</param>
/// <param name="id">The initial directory</param>
/// <returns>Specified filename</returns>
private string SaveFileTo(string id, string fn)
{
SaveFileDialog fd = new SaveFileDialog();
//fd.OverwritePrompt = false;
fd.AddExtension = true;
fd.ValidateNames = true;
fd.FileName = fn;
fd.InitialDirectory = id;
//fd.Filter = "PDF files|*.pdf|Other ext like music|*.mp3;*.wma|All File|*.*";
fd.Filter = "PDF files|*.pdf";
if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
return fd.FileName;
return "";
}
并且,在功能区按钮的方法
string s = SaveFileTo(@"C:\Users\Public\Documents", "MyAtt");
//Do something with s
MessageBox.Show(s);
正如您在功能中看到的那样,两行被注释,您可以取消注释它们,或者像您希望应用程序一样修改它们