0

リボン ボタンがあり、メール本文のテキスト、件名、送信者の電子メール アドレスを 3 つの個別の文字列変数に格納したいと考えています。私がこれまで取り組んできたコード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;
using Outlook=Microsoft.Office.Interop.Outlook;
using office = Microsoft.Office.Core;
using System.IO;

namespace OutlookAddIn1
{
    public partial class Ribbon2
    {
        string s1,s2,s3;

        private void Ribbon2_Load(object sender, RibbonUIEventArgs e)
        {

        }

        void extract(string s1, string s2, string s3)
        {
            string Body,address,subject;
            Outlook._Application oApp = new Outlook.Application();
            if (oApp.ActiveExplorer().Selection.Count > 0)
            {
                Object selObject = oApp.ActiveExplorer().Selection[1];

                if (selObject is Outlook.MailItem)
                {
                    Outlook.MailItem mailItem = (selObject as Outlook.MailItem);
                    subject = mailItem.Subject;
                    address = mailItem.SenderEmailAddress;
                    Body = mailItem.Body;
                    s1 = Body;
                    s2 = address;
                    s3 = subject;
                }
            }

        }
        private void button1_Click(object sender, RibbonControlEventArgs e)
        {
            extract(s1,s2,s3);
            System.Windows.Forms.MessageBox.Show(s1);
            System.Windows.Forms.MessageBox.Show(s2);
            System.Windows.Forms.MessageBox.Show(s3);
        }

    }
}

しかし、メッセージボックスは空です。

4

1 に答える 1

1

outメソッドでキーワードを使用する必要がありますextract。メソッド内のローカル バージョンはs1, s2, s3グローバル バージョンを隠していました。これは、メッセージ ボックスに表示しようとしていたグローバル バージョンでした。

namespace OutlookAddIn1
{
    public partial class Ribbon2
    {
        private void Ribbon2_Load(object sender, RibbonUIEventArgs e) { }

        void extract(out String s1, out String s2, out String s3)
        {
            String s1 = String.Empty, s2 = String.Empty, s3 = String.Empty;
            String Body,address,subject;
            Outlook._Application oApp = new Outlook.Application();
            if (oApp.ActiveExplorer().Selection.Count > 0)
            {
                Object selObject = oApp.ActiveExplorer().Selection[1];

                if (selObject is Outlook.MailItem)
                {
                    Outlook.MailItem mailItem = (selObject as Outlook.MailItem);
                    subject = mailItem.Subject;
                    address = mailItem.SenderEmailAddress;
                    Body = mailItem.Body;
                    s1 = Body;
                    s2 = address;
                    s3 = subject;
                }
            }
        }

        private void button1_Click(object sender, RibbonControlEventArgs e)
        {
            String s1 = String.Empty, s2 = String.Empty, s3 = String.Empty;
            extract(out s1, out s2, out s3);
            System.Windows.Forms.MessageBox.Show(s1);
            System.Windows.Forms.MessageBox.Show(s2);
            System.Windows.Forms.MessageBox.Show(s3);
        }

    }
}
于 2013-06-06T10:54:07.590 に答える