C# VSTO加载项保存文件对话框

C# VSTO加载项保存文件对话框,c#,vsto,outlook-addin,C#,Vsto,Outlook Addin,我有一个VSTO加载项,它有一个带有saveFileDialog的表单。我想向saveFileDialog传递一个特定的文件名和路径,以设置属性filename和InitialDirectory。问题是我能看到的唯一方法是修改InitializeComponent()和表单构造函数,以获取参数filename和path来设置这些属性。问题是VisualStudio说不要修改文件的这一部分,甚至会删除在那里添加/修改的代码,这是在我尝试该方法时发生的 传递这些变量以设置这些属性的正确方法是什么?我

我有一个VSTO加载项,它有一个带有saveFileDialog的表单。我想向saveFileDialog传递一个特定的文件名和路径,以设置属性filename和InitialDirectory。问题是我能看到的唯一方法是修改InitializeComponent()和表单构造函数,以获取参数filename和path来设置这些属性。问题是VisualStudio说不要修改文件的这一部分,甚至会删除在那里添加/修改的代码,这是在我尝试该方法时发生的

传递这些变量以设置这些属性的正确方法是什么?我是否可以不使用表单而使用saveFileDialog,或者这是不必要的

谢谢

编辑:

并使用以下表格:

var frm2 = new Form2(filename, path);
DialogResult result = frm2.ShowDialog();
对于我添加到功能区组的按钮,我在按钮单击处理程序中调用它

这样行吗?在我修改Initialize组件以接受参数之前,但由于您不应该接触该方法,所以我放弃了更改,并将其更改为粘贴在此处的内容


如果我不清楚我要做的是弹出一个“保存文件”对话框,其中文件名和初始目录已经设置好。

您需要一个事件处理程序来完成此操作。例如,添加一个按钮。在button_Click方法中,调用saveFileDialog实例上的ShowDialog方法。中的此示例显示了使用文本扩展名保存文件的示例

编辑


在这里,我将saveFileDialog放在表单中,但我设置了默认名称和。。。。在该事件处理程序中,我有一个按钮单击方法可以做到这一点。但是我的saveFileDialog在表单上,所以我在将正确的变量传递到表单以及saveFileDialog时遇到了问题。我应该只创建一个没有表单的saveFileDialog吗?您可以将saveFileDialog放在表单中,但是您需要事件处理程序来访问其属性,请检查我编辑的回答我明白了,但是我在哪里实例化表单?如何从表单外部将变量传递给saveFileDialog?我能看到的唯一方法是将它们传递给表单的构造函数。但为了设置这些属性,您必须将它们传递给initializecomponent,您不应该编辑它。所以我不知道怎么做。不,这个流编写器只是在文件中编写一些文本的一个例子。@shenk不需要编写代码来保存。据我所知,您正在将参数传递给form类。但SaveFileDialog是指定保存文件选项的类。SaveFileDialog是一个类,它提供了一种机制,使用户可以指定保存文件的选项。这段代码有效吗?表单中有一个savefiledialog,我现在发现这可能是错误的方法。放弃表单并直接创建savefiledialog是正确的做法吗?您的意思是不使用表单而使用savefiledialog吗?我本人不建议这样做,但你比任何人都更了解你的应用程序,所以这是你的决定。请看这里的正确答案:请看我的另一个问题。这个人的回答让我很困惑,似乎我应该删除这个表单,因为根据他的说法,它将是空白的,因为它只有一个saveFileDialog。回答:正如你在那个问题中所描述的,和其他人一样,我认为你也不需要形式。
var frm2 = new Form2(filename, path);
DialogResult result = frm2.ShowDialog();
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");

    }
}