VSTO 加载项保存文件对话框

VSTO Addin Save File Dialog

我有一个 VSTO 插件,它有一个带有 saveFileDialog 的表单。我想将特定的文件名和路径传递给 saveFileDialog 以设置属性 FileName 和 InitialDirectory。问题是我能看到的唯一方法是修改 InitializeComponent() 和 Form 构造函数以采用参数文件名和路径来设置这些属性。问题是 visual studio 说不要修改文件的那部分,甚至会删除那里的代码 added/altered,这是我尝试该方法时发生的。

传入这些变量以设置这些属性的正确方法是什么?我可以在没有表单的情况下使用 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 组件以接受参数之前,但由于您不应该触及该方法,因此我放弃了我的更改并将其更改为我在此处粘贴的内容。

如果我不清楚我想做的是弹出一个已设置文件名和初始目录的保存文件对话框。

您需要一个事件处理程序来执行此操作。例如添加一个按钮。在 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 放在了我的表单中,但我设置了默认名称并....在该事件处理程序中