【问题标题】:Save File Dialog in Outlook VSTO AddinOutlook VSTO 插件中的保存文件对话框
【发布时间】:2015-05-17 06:43:46
【问题描述】:

我想创建一个保存文件对话框,当您按下自定义功能区按钮并将文件名和初始目录属性设置为特定值时会打开该对话框。现在我在一个表单中创建了那个对话框。在设计器中,它显示在底部窗格中,因为它不是直接在表单上绘制的项目,或者我在这个问题中被告知:Visual Studio Designer Bottom Pane

我的问题是:我应该删除表单并自行创建 saveFileDialog 吗?或者,如果我保留表单,当我调用 form.ShowDialog() 时,它会显示我与设计器一起添加的 saveFileDialog 吗?还是我需要调用 saveFileDialog.ShowDialog()? (我不能在课外做)。我不确定实现自定义 saveFileDialog 的正确方法是什么。曾经有人告诉我要创建一个表单,现在看来我不应该使用表单。

【问题讨论】:

    标签: c# outlook vsto outlook-addin


    【解决方案1】:

    我认为您绝对不需要通过表单使用保存对话框;

    在您的功能区代码中添加:

    置顶

    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);
    

    正如您在函数中看到的那样,有两行注释,您可以取消注释或修改它们,就像您希望您的应用正常工作一样

    【讨论】:

    • 我没有让你的例子指向 s = 或 id,但它确实有效
    • string s = SaveFileTo(@"C:\Users\Public\Documents", "MyAtt");之后,如果你点击Save你会得到s = @"C:\Users\Public\Documents\MyAtt.pdf"作为返回的文件名; id 是初始目录;如果你谈论@,我用它来逃避`\`
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2016-02-09
    • 1970-01-01
    • 2010-12-10
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多