VSTO Addin保存文件对话框

时间:2015-05-17 00:21:04

标签: c# vsto outlook-addin

我有一个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组件以接受参数之前,但由于您不应该触摸该方法,因此我删除了我的更改并将其更改为我在此处粘贴的内容。

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

1 个答案:

答案 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放在我的表单中,但我在该事件处理程序中设置了默认名称和....