我有一个VSTO插件,其上有一个带有saveFileDialog的表单。我想传递一个特定的文件名和路径来saveFileDialog来设置属性FileName和InitialDirectory。问题是我能看到的唯一方法是修改InitializeComponent()和Form构造函数以获取参数filename和path来设置这些属性。问题是visual studio说不修改文件的那一部分,甚至会删除在我尝试该方法时发生的添加/修改的代码。
传递这些变量来设置这些属性的正确方法是什么?我可以在没有表格的情况下使用saveFileDialog,还是不必要?
由于
编辑:
public partial class Form2 : Form
{
internal string filename;
internal string path;
public Form2(string filename, string path)
{
this.filename = filename;
this.path = path;
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
saveFileDialog2.FileName = filename;
saveFileDialog2.InitialDirectory = path;
}
}
并使用表格:
var frm2 = new Form2(filename, path);
DialogResult result = frm2.ShowDialog();
我在按钮点击处理程序中为我添加到功能区组的按钮调用它。
会这样做吗?在我修改Initialize组件以接受参数之前,但由于您不应该触摸该方法,因此我删除了我的更改并将其更改为我在此处粘贴的内容。
如果我不清楚我想要做的是弹出一个保存文件对话框,文件名和初始目录已经设置。
答案 0 :(得分:2)
你需要一个事件处理程序来做到这一点。例如添加一个按钮。在button_Click方法中,在saveFileDialog实例上调用ShowDialog方法。 MSDN中的此示例显示了一个使用文本扩展名保存文件的示例。
修改
private void button1_Click(object sender, EventArgs e)
{
saveFileDialog1.FileName = "DefaultName.txt";
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
using (StreamWriter streamWriter = new StreamWriter(saveFileDialog1.FileName))
streamWriter.Write("some text");
}
}
这里我将saveFileDialog放在我的表单中,但我在该事件处理程序中设置了默认名称和....