none
How to discard changes to an outlook taskItem? RRS feed

  • Question

  • Hi,

    I added an outlook form region to my outlook-2010-add-in, to display some user-definied properties. Everything works as I expected. But if the user wants to discard his chages by using the closing-button in the upper right corner and answering the the question if he wants to save changes with no, outlook seems to work properly. But if you try to close outlook after this, outlook asks twice if you want to save your changes.

    It seems that  the TaskItem-property "saved" is still false.

    To keep it simple here is some code, that makes changes to the TaskItem.Subject the behavior is the same when I use userdefined properties. 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Office = Microsoft.Office.Core;
    using Outlook = Microsoft.Office.Interop.Outlook;

    namespace OutlookAddIn1
    {
        partial class FormRegion1
        {

            Outlook.TaskItem taskItem;


            #region Formularbereichsfactory

     
                   
    [Microsoft.Office.Tools.Outlook.FormRegionMessageClass(Microsoft.Office.Tools.Outlook.FormRegionMessageClassAttribute.Task)]
            [Microsoft.Office.Tools.Outlook.FormRegionName("OutlookAddIn1.FormRegion1")]
            public partial class FormRegion1Factory
            {
                // Tritt ein, bevor der Formularbereich initialisiert wird.
                // Um die Anzeige des Formularbereichs zu verhindern, legen Sie e.Cancel auf True fest.
                // Verwenden Sie e.OutlookItem, um einen Verweis auf das aktuelle Outlook-Element abzurufen.
               
    private void FormRegion1Factory_FormRegionInitializing(object sender,
    Microsoft.Office.Tools.Outlook.FormRegionInitializingEventArgs e)
                {
                }
            }

            #endregion

            // Tritt ein, bevor der Formularbereich angezeigt wird.
            // Verwenden Sie this.OutlookItem, um einen Verweis auf das aktuelle Outlook-Element abzurufen.
            // Verwenden Sie this.OutlookFormRegion, um einen Verweis auf den Formularbereich abzurufen.
            private void FormRegion1_FormRegionShowing(object sender, System.EventArgs e)
            {
                taskItem = this.OutlookItem as Outlook.TaskItem;
                textBox1.Text = taskItem.Subject;


            }

            // Tritt ein, wenn der Formularbereich geschlossen wird.
            // Verwenden Sie this.OutlookItem, um einen Verweis auf das aktuelle Outlook-Element abzurufen.
            // Verwenden Sie this.OutlookFormRegion, um einen Verweis auf den Formularbereich abzurufen.
            private void FormRegion1_FormRegionClosed(object sender, System.EventArgs e)
            {
            }

            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                taskItem.Subject = textBox1.Text;
            }
        }
    }

    Thanks in advance

    jojo99

    Tuesday, September 11, 2012 10:41 AM

Answers

All replies