﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>BLOG of Helmut Obertanner</title>
    <description>Blog about VSTO, Office and Outlook development using .net languages.
News, Tips &amp; Tricks.</description>
    <link>http://www.x4u.de/Home/tabid/36/BlogId/1/Default.aspx</link>
    <language>en-US</language>
    <managingEditor>Helmut Obertanner</managingEditor>
    <webMaster>flash@x4u.de</webMaster>
    <pubDate>Fri, 12 Mar 2010 02:50:50 GMT</pubDate>
    <lastBuildDate>Fri, 12 Mar 2010 02:50:50 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 3.5.1.19887</generator>
    <item>
      <title>Windows7 tastes good!</title>
      <description>&lt;p&gt; &lt;/p&gt;&lt;a href=http://www.outlooksharp.de/Home/tabid/36/EntryId/64/Windows7-tastes-good.aspx&gt;More...&lt;/a&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/64/Windows7-tastes-good.aspx</link>
      <category domain="http://www.x4u.de/home/tabid/36/blogid/3/default.aspx">Blog of Helmut Obertanner</category>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/64/Windows7-tastes-good.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/64/Windows7-tastes-good.aspx</guid>
      <pubDate>Mon, 08 Mar 2010 09:09:00 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=64</trackback:ping>
    </item>
    <item>
      <title>Windows7 schmeckt gut!</title>
      <description>&lt;p&gt;Kollegen lieben MVPs!
&lt;/p&gt;&lt;p&gt;&lt;img src="/Portals/0/Blog/Files/2/63/030810_0907_Windows7sch1.png" alt=""/&gt;&lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/63/Windows7-schmeckt-gut.aspx</link>
      <category domain="http://www.x4u.de/home/tabid/36/blogid/2/default.aspx">Blog von Helmut Obertanner</category>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/63/Windows7-schmeckt-gut.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/63/Windows7-schmeckt-gut.aspx</guid>
      <pubDate>Mon, 08 Mar 2010 09:07:24 GMT</pubDate>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=63</trackback:ping>
    </item>
    <item>
      <title>Outlook Personal Folders File Format specification available</title>
      <description>&lt;p&gt;Microsoft released documentation for the Outlook PST-File format.
&lt;/p&gt;&lt;p&gt;You can download the documentation as PDF-Files from this site:&lt;br/&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff385210.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff385210.aspx&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/62/Outlook-Personal-Folders-File-Format-specification-available.aspx</link>
      <category domain="http://www.x4u.de/home/tabid/36/blogid/3/default.aspx">Blog of Helmut Obertanner</category>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/62/Outlook-Personal-Folders-File-Format-specification-available.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/62/Outlook-Personal-Folders-File-Format-specification-available.aspx</guid>
      <pubDate>Mon, 08 Mar 2010 07:57:23 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=62</trackback:ping>
    </item>
    <item>
      <title>Dokumentation für Outlook PST-Format veröffentlicht</title>
      <description>&lt;p&gt;&lt;span style="color:#2c2c2c"&gt;Unter folgendem Link:
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff385210.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff385210.aspx&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Steht seit kurzem die Dokumentation für das Microsoft Outlook PST Datei-Format zur Verfügung.&lt;br/&gt;&lt;span style="color:#444444"&gt;Im Rahmen der &lt;a href="http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=13292220&amp;s1=b3afca32-89ac-1b23-c80f-d3e925ae79c6" target="_blank"/&gt;&lt;/span&gt;Interoperabilitätsoffensive&lt;span style="color:#444444"&gt; steht jetzt in der MSDN Library die angekündigte Dokumentation für das PST-Dateiformat der Outlook-Datendateien zum Abruf bereit. Somit ist der Zugriff auf E-Mails, Kalender, Kontakte und andere Outlook-generierte Daten auch außerhalb dokumentierter APIs geöffnet. Selbstverständlich stehen auch die Seiten bereits &lt;a href="http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=13292221&amp;s1=b3afca32-89ac-1b23-c80f-d3e925ae79c6" target="_blank"/&gt;&lt;/span&gt;veröffentlichter Dokumentationen der Office- und Windows-Dateiformate und -Protokolle&lt;span style="color:#444444"&gt; weiterhin kostenfrei zur Lektüre bereit.
&lt;/span&gt;&lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/61/Dokumentation-fur-Outlook-PST-Format-veroffentlicht.aspx</link>
      <category domain="http://www.x4u.de/home/tabid/36/blogid/2/default.aspx">Blog von Helmut Obertanner</category>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/61/Dokumentation-fur-Outlook-PST-Format-veroffentlicht.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/61/Dokumentation-fur-Outlook-PST-Format-veroffentlicht.aspx</guid>
      <pubDate>Mon, 08 Mar 2010 07:51:54 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=61</trackback:ping>
    </item>
    <item>
      <title>10 Licenses for free – 30% off</title>
      <description>&lt;p&gt;Instyler Software developed an Outlook-Add-in for managing Business traveling times.&lt;br/&gt;The Add-in is a must-have for business travelers and freelancers and gives support for managing traveling times.&lt;br/&gt;&lt;a href="http://www.instyler.com/"&gt;http://www.instyler.com/&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.instyler.com/"&gt;&lt;img src="/Portals/0/Blog/Files/1/60/012910_2001_10Licensesf1.png" alt="" border="0"/&gt;&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Due to the good cooperation between X4U and Instyler I can give away 10 licenses (max. 1 license per user) for free to my blog readers.&lt;br/&gt;First 10 readers that drop me a mail with subject: &lt;strong&gt;Travel Add-in&lt;/strong&gt; via the &lt;a href="http://www.x4u.de/Impressum/Feedback.aspx"&gt;Feedbackformular&lt;/a&gt;, receive a free Travel Add-in license. 
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.instyler.com/"&gt;&lt;img src="/Portals/0/Blog/Files/1/60/012910_2001_10Licensesf2.png" alt="" border="0"/&gt;&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;If you are not a lucky winner and still like this software, you can use a voucher code: &lt;strong&gt;TRAVELX4U&lt;/strong&gt;&lt;br/&gt;to get 30% of the normal price.
&lt;/p&gt;&lt;p&gt;The Add-in can be downloaded and tested without any restrictions for 30 days after installation.
&lt;/p&gt;&lt;p&gt;Helmut Obertanner
&lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/60/10-Licenses-for-free-30-off.aspx</link>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/60/10-Licenses-for-free-30-off.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/60/10-Licenses-for-free-30-off.aspx</guid>
      <pubDate>Fri, 29 Jan 2010 20:01:25 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=60</trackback:ping>
    </item>
    <item>
      <title>10 Lizenzen zu verschenken – 30% Rabatt</title>
      <description>&lt;p&gt;Instyler Software hat ein Outlook-Add-in zur Verwaltung von Fahrtzeiten entwickelt.&lt;br/&gt;Das Add-in ist ideal für Geschäftsreisende und Freiberufler und unterstützt bei der Fahrtzeitenplanung.&lt;br/&gt;&lt;a href="http://www.instyler.com/"&gt;http://www.instyler.com/&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.instyler.com/"&gt;&lt;img src="/Portals/0/Blog/Files/2/59/012910_1951_10Lizenzenz1.png" alt="" border="0"/&gt;&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Dank der guten Zusammenarbeit kann ich meinen treuen Blog-Lesern freundlicherweise 10 Lizenzen (Max. 1 Lizenz pro Benutzer) gratis zur Verfügung stellen.&lt;br/&gt;Die ersten 10 Leser welche eine Email mit Betreff: &lt;strong&gt;Travel Add-in&lt;/strong&gt; über das &lt;a href="http://www.x4u.de/Impressum/Feedback.aspx"&gt;Feedbackformular&lt;/a&gt; an mich senden, erhalten eine Travel Add-in Lizenz gratis. 
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.instyler.com/"&gt;&lt;img src="/Portals/0/Blog/Files/2/59/012910_1951_10Lizenzenz2.png" alt="" border="0"/&gt;&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Wenn Sie nicht zu den Gewinnern zählen und Ihnen die Software trotzdem gefällt, können Sie beim Kauf den&lt;br/&gt;Gutscheincode: &lt;strong&gt;TRAVELX4U&lt;/strong&gt;&lt;br/&gt;angeben, sie erhalten auf jede Lizenz einen Rabatt von 30% auf den aktuellen Kaufpreis.
&lt;/p&gt;&lt;p&gt;Das Add-in kann heruntergeladen werden, und vor dem Kauf 30 Tage ohne Einschränkungen getestet werden.
&lt;/p&gt;&lt;p&gt;Helmut Obertanner&lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/59/10-Lizenzen-zu-verschenken-30-Rabatt.aspx</link>
      <category domain="http://www.x4u.de/home/tabid/36/blogid/2/default.aspx">Blog von Helmut Obertanner</category>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/59/10-Lizenzen-zu-verschenken-30-Rabatt.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/59/10-Lizenzen-zu-verschenken-30-Rabatt.aspx</guid>
      <pubDate>Fri, 29 Jan 2010 19:51:13 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=59</trackback:ping>
    </item>
    <item>
      <title>Kostenloses SharePoint eMagazin</title>
      <description>&lt;p&gt;Die Niederländische Benutzergruppe (DIUWG) hat ein SharePoint eMagazin herausgegeben. Das Magazin richtet sich an Entwickler, IT-Profis und Power-Benutzer. Es ist die erste Ausgabe des Magazins und es ist pro Jahr 4 eMagazine und 4 Magazine im Papierformat herauszugeben.
&lt;/p&gt;&lt;p&gt;Das Magazin ist in englischer Sprache.
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sdn.nl/IW/FreeMagazine/tabid/139/Default.aspx"&gt;http://www.sdn.nl/IW/FreeMagazine/tabid/139/Default.aspx&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Viel Spaß.&lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/58/Kostenloses-SharePoint-eMagazin.aspx</link>
      <category domain="http://www.x4u.de/home/tabid/36/blogid/2/default.aspx">Blog von Helmut Obertanner</category>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/58/Kostenloses-SharePoint-eMagazin.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/58/Kostenloses-SharePoint-eMagazin.aspx</guid>
      <pubDate>Mon, 18 Jan 2010 20:04:46 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=58</trackback:ping>
    </item>
    <item>
      <title>Free SharePoint eMagazine</title>
      <description>&lt;p&gt;The Dutch Software Development Network Usergroup (DIWUG) has published an SharePoint eMagazine free for download. It's their first eMagazine and they are planning to release 4 paper and 4 eMagazines per year. 
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana; font-size:9pt"&gt;A free magazine &lt;strong&gt;for IT-Pro's, Developers and End (power) Users&lt;/strong&gt; and optimized to read in eReaders.
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sdn.nl/IW/FreeMagazine/tabid/139/Default.aspx"&gt;http://www.sdn.nl/IW/FreeMagazine/tabid/139/Default.aspx&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Happy reading.   &lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/57/Free-SharePoint-eMagazine.aspx</link>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/57/Free-SharePoint-eMagazine.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/57/Free-SharePoint-eMagazine.aspx</guid>
      <pubDate>Mon, 18 Jan 2010 20:00:15 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=57</trackback:ping>
    </item>
    <item>
      <title>Outlook Formular per Code schliessen</title>
      <description>&lt;p&gt;In diesem Beispiel möchte ich über meine Erfahrungen zum über das Schliessen eines Formulars per Programmcode berichten.
&lt;/p&gt;&lt;p&gt;Vor kurzem habe ich ein Beispiel zum Überprüfen und Absichern von Geschäftsregeln in einem Outlook Add-in berichtet:&lt;br/&gt;&lt;a href="http://www.x4u.de/Home/tabid/36/EntryId/54/Geschaftsregeln-fur-Outlook-Formulare.aspx"&gt;http://www.outlooksharp.dehttp://www.x4u.de/Home/tabid/36/EntryId/54/Geschaftsregeln-fur-Outlook-Formulare.aspx&lt;/a&gt;
	&lt;/p&gt;&lt;h2&gt;Das Problem:
&lt;/h2&gt;&lt;p&gt;Implementiert man eine Lösung zum Sicherstellen von Geschäftsregeln möchte man den Benutzer darauf hinweisen, dass irgendetwas nicht korrekt ausgefüllt ist. Dazu kann man dem Benutzer einen modalen Dialog(MessageBox) anzeigen. Ist eine der Regeln ungültig, kann der Benutzer weder speichern – noch das Formular schliessen. Man sollte dem Benutzer aber immer die Möglichkeit geben einen Vorgang abzubrechen. Zu diesem Zweck kann man dem Benutzer im der Close-Benachrichtigung einen Dialog mit zwei Schaltflächen anzeigen z.B. Ok und Abbrechen. Klickt der benutzer in  diesem Fall auf Abbrechen – soll das Formular einfach geschlossen werden ohne die modifizierten Daten zu speichern. &lt;br/&gt;Prinzipiell sieht die Lösung wie folgt aus:
&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; Flag is used to close the Form when Cancel is clicked
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;bool&lt;/span&gt; _closeAfterCancel = &lt;span style="color:blue"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; Validates the BusinessRules and returns true if all rules are valid
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;param name="showCancelButton"&gt;&lt;span style="color:green"&gt;If true, a OK/Cancel MessageBox is displayed to the user&lt;span style="color:gray"&gt;&lt;/param&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;returns&gt;&lt;span style="color:green"&gt;true when all rules are valid&lt;span style="color:gray"&gt;&lt;/returns&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;bool&lt;/span&gt; Validate(&lt;span style="color:blue"&gt;bool&lt;/span&gt; showCancelButton) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (Item.Saved) &lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// Default value
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeAfterCancel = &lt;span style="color:blue"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// if every business rule is valid we return true
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_BusinessRules.TrueForAll(&lt;span style="color:#2b91af"&gt;X4UBusinessRule&lt;/span&gt;.IsRuleValid)) &lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// no ?
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// show a warning to the user and 
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#2b91af"&gt;StringBuilder&lt;/span&gt; message = &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;StringBuilder&lt;/span&gt;(500);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    message.AppendLine(&lt;span style="color:#a31515"&gt;"You can't save this Item, because the following requirements are not met:"&lt;/span&gt;);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af"&gt;X4UBusinessRule&lt;/span&gt; rule &lt;span style="color:blue"&gt;in&lt;/span&gt; _BusinessRules) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (!rule.IsValid()) message.AppendLine(rule.Description);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// display a message to the user what's wrong.
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#2b91af"&gt;DialogResult&lt;/span&gt; messageBoxResult  = &lt;span style="color:#2b91af"&gt;MessageBox&lt;/span&gt;.Show (&lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;OutlookWin32Window&lt;/span&gt;(Inspector),
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        message.ToString(), &lt;span style="color:green"&gt;// Message
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#a31515"&gt;"Warning!"&lt;/span&gt;,         &lt;span style="color:green"&gt;// Caption
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        showCancelButton ? &lt;span style="color:#2b91af"&gt;MessageBoxButtons&lt;/span&gt;.OKCancel :  &lt;span style="color:#2b91af"&gt;MessageBoxButtons&lt;/span&gt;.OK, &lt;span style="color:green"&gt;// Which Buttons should we display
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#2b91af"&gt;MessageBoxIcon&lt;/span&gt;.Exclamation, &lt;span style="color:green"&gt;// The Icon
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#2b91af"&gt;MessageBoxDefaultButton&lt;/span&gt;.Button1 &lt;span style="color:green"&gt;// The Default Button 
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        );
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// when OK-Button is clicked, we cancel the Operation
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (showCancelButton &amp;&amp; messageBoxResult==&lt;span style="color:#2b91af"&gt;DialogResult&lt;/span&gt;.Cancel ){
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        _closeAfterCancel = &lt;span style="color:blue"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;    
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Wenn eine der geschäftsregeln nicht eingehalten wird, liefert die &lt;em&gt;Validate&lt;/em&gt;-Methode &lt;em&gt;false&lt;/em&gt; zurück.&lt;br/&gt;Klickt der Benutzer auf die Abbrechen-Schaltfläche im angezeigten Dialog, soll das Formular ohne die Daten zu speichern geschlossen werden.&lt;br/&gt;Um das zu erreichen wird ein Flag  &lt;em&gt;_closeAfterCancel&lt;/em&gt; auf true gesetzt. Normalerweise könnte man jetzt einfach die Methode &lt;em&gt;Inspector.Close(Outlook.OlInspectorClose.OlDiscard)&lt;/em&gt; im  Item_Close event aufrufen.
&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; This Method is called when the Item is going to be closed
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;param name="Cancel"&gt;&lt;/param&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt; Item_Close(&lt;span style="color:blue"&gt;ref&lt;/span&gt;
			&lt;span style="color:blue"&gt;bool&lt;/span&gt; Cancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (!_closeAfterCancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        Cancel = !Validate(&lt;span style="color:blue"&gt;true&lt;/span&gt;); &lt;span style="color:green"&gt;// MessageBox with OK + Cancel Button
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_closeAfterCancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;            Inspector.Close(Outlook.&lt;span style="color:#2b91af"&gt;OlInspectorClose&lt;/span&gt;.olDiscard); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Leider musste ich feststellen, dass dies so nicht funktioniert. Anstatt das Formular zu schliessen, wird ein &lt;em&gt;"Möchten Sie die Änderungen Speichern"&lt;/em&gt;-Dialog angezeigt.&lt;br/&gt;Außerdem wurden im  Outlook Objekt Model(OOM) einige Änderungen durchgeführt, welche eine korrekte Funktion verschiedener Methoden im Close-Event verhindern, siehe &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;929593"&gt;KB929593&lt;/a&gt;.&lt;br/&gt;Als Lösungsansatz kann man einen Timer starten und im Timer_Tick event die Methode Inspector.Close aufrufen.&lt;br/&gt;So sieht der modifizierte Programmcode dazu aus:
&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; Used to call Close() out of the Item_Close event.
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:#2b91af"&gt;Timer&lt;/span&gt; _closeTimer;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; This Method is called when the Item is going to be closed
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;param name="Cancel"&gt;&lt;/param&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt; Item_Close(&lt;span style="color:blue"&gt;ref&lt;/span&gt;
			&lt;span style="color:blue"&gt;bool&lt;/span&gt; Cancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (!_closeAfterCancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        Cancel = !Validate(&lt;span style="color:blue"&gt;true&lt;/span&gt;); &lt;span style="color:green"&gt;// MessageBox with OK + Cancel Button
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_closeAfterCancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;            _closeTimer = &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;Timer&lt;/span&gt;();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;            _closeTimer.Tick += &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;EventHandler&lt;/span&gt;(_closeTimer_Tick);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;            _closeTimer.Start();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt; _closeTimer_Tick(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;EventArgs&lt;/span&gt; e) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeTimer.Stop();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeTimer.Dispose(); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// Close the current Form without saving
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    Inspector.Close(Outlook.&lt;span style="color:#2b91af"&gt;OlInspectorClose&lt;/span&gt;.olDiscard); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Jedoch wenn man dies ausführt kommt folgendes Resultat:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Es wird kein &lt;em&gt;"Möchten Sie die Änderungen Speichern"&lt;/em&gt;-Dialog angezeigt
&lt;/li&gt;&lt;li&gt;Das Formular wird geschlossen
&lt;/li&gt;&lt;li&gt;Die Daten werden gespeichert
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Es funktioniert einfach nicht wie gewünscht.&lt;br/&gt;Nach meinen Erkenntnissen ist die einzig funktionierene Form anstatt der Inspector.Close(olDiscard)- die Item.Close(olDiscard)-Mehtode aufzurufen.&lt;br/&gt;Der korrekte Code sieht dementsprechend aus:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt; _closeTimer_Tick(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;EventArgs&lt;/span&gt; e) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeTimer.Stop();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeTimer.Dispose(); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// Close the current Form without saving
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    Item.Close(Outlook.&lt;span style="color:#2b91af"&gt;OlInspectorClose&lt;/span&gt;.olDiscard); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Nur mit dieser Implementierung wird das Formular geschlossen ohne die Daten zu speichern.
&lt;/p&gt;&lt;p&gt;Herzlichen Dank an &lt;a href="http://www.slovaktech.com/"&gt;Ken Slovak&lt;/a&gt;, durch Ihn bin ich auf die korrekte Lösung gekommen.
&lt;/p&gt;&lt;p&gt;Viele Grüße – Helmut Obertanner&lt;br/&gt;&lt;a href="http://www.x4u.de"&gt;http://www.x4u.de&lt;/a&gt;
	&lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/56/Outlook-Formular-per-Code-schliessen.aspx</link>
      <category domain="http://www.x4u.de/home/tabid/36/blogid/2/default.aspx">Blog von Helmut Obertanner</category>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/56/Outlook-Formular-per-Code-schliessen.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/56/Outlook-Formular-per-Code-schliessen.aspx</guid>
      <pubDate>Fri, 08 Jan 2010 20:06:23 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=56</trackback:ping>
    </item>
    <item>
      <title>Closing an Outlook Inspector by code</title>
      <description>&lt;p&gt;In this post I will share some tips about closing an Inspector without saving changed data programmatically.
&lt;/p&gt;&lt;p&gt;Recently I blogged about enforcing BusinessRules within Outlook here:&lt;br/&gt;&lt;a href="http://www.x4u.de/Home/tabid/36/EntryId/53/Enforcing-business-rules-for-Outlook-Items.aspx"&gt;http://www.outlooksharp.dehttp://www.x4u.de/Home/tabid/36/EntryId/53/Enforcing-business-rules-for-Outlook-Items.aspx&lt;/a&gt;
	&lt;/p&gt;&lt;h2&gt;The problem:
&lt;/h2&gt;&lt;p&gt;If you use BusinessRules in your AddIn and validate the rules at the Item_Write and the Item_Close event you may cancel the current operation and display the user a MessageBox that something went wrong. If the rule isn't successfully validated, the user can't close this form. So you need to give the user the opportunity to close the Form without saving the modified values(discard changes). For this case we can display a MessageBox with two buttons (OK/Cancel) to the user. When the user clicks on Cancel, we just want to close the Form without saving the data.&lt;br/&gt;To archive this, you can use the following code snippet:
&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; Flag is used to close the Form when Cancel is clicked
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;bool&lt;/span&gt; _closeAfterCancel = &lt;span style="color:blue"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; Validates the BusinessRules and returns true if all rules are valid
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;param name="showCancelButton"&gt;&lt;span style="color:green"&gt;If true, a OK/Cancel MessageBox is displayed to the user&lt;span style="color:gray"&gt;&lt;/param&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;returns&gt;&lt;span style="color:green"&gt;true when all rules are valid&lt;span style="color:gray"&gt;&lt;/returns&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;
			&lt;span style="color:blue"&gt;bool&lt;/span&gt; Validate(&lt;span style="color:blue"&gt;bool&lt;/span&gt; showCancelButton) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (Item.Saved) &lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// Default value
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeAfterCancel = &lt;span style="color:blue"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// if every business rule is valid we return true
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_BusinessRules.TrueForAll(&lt;span style="color:#2b91af"&gt;X4UBusinessRule&lt;/span&gt;.IsRuleValid)) &lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// no ?
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// show a warning to the user and 
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#2b91af"&gt;StringBuilder&lt;/span&gt; message = &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;StringBuilder&lt;/span&gt;(500);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    message.AppendLine(&lt;span style="color:#a31515"&gt;"You can't save this Item, because the following requirements are not met:"&lt;/span&gt;);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;foreach&lt;/span&gt; (&lt;span style="color:#2b91af"&gt;X4UBusinessRule&lt;/span&gt; rule &lt;span style="color:blue"&gt;in&lt;/span&gt; _BusinessRules) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (!rule.IsValid()) message.AppendLine(rule.Description);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// display a message to the user what's wrong.
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#2b91af"&gt;DialogResult&lt;/span&gt; messageBoxResult  = &lt;span style="color:#2b91af"&gt;MessageBox&lt;/span&gt;.Show (&lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;OutlookWin32Window&lt;/span&gt;(Inspector),
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        message.ToString(), &lt;span style="color:green"&gt;// Message
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#a31515"&gt;"Warning!"&lt;/span&gt;,         &lt;span style="color:green"&gt;// Caption
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        showCancelButton ? &lt;span style="color:#2b91af"&gt;MessageBoxButtons&lt;/span&gt;.OKCancel :  &lt;span style="color:#2b91af"&gt;MessageBoxButtons&lt;/span&gt;.OK, &lt;span style="color:green"&gt;// Which Buttons should we display
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#2b91af"&gt;MessageBoxIcon&lt;/span&gt;.Exclamation, &lt;span style="color:green"&gt;// The Icon
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:#2b91af"&gt;MessageBoxDefaultButton&lt;/span&gt;.Button1 &lt;span style="color:green"&gt;// The Default Button 
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        );
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// when OK-Button is clicked, we cancel the Operation
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (showCancelButton &amp;&amp; messageBoxResult==&lt;span style="color:#2b91af"&gt;DialogResult&lt;/span&gt;.Cancel ){
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        _closeAfterCancel = &lt;span style="color:blue"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;    
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;return&lt;/span&gt;
			&lt;span style="color:blue"&gt;false&lt;/span&gt;;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;So, if rules are failing the &lt;em&gt;Validate&lt;/em&gt;-Method returns false.&lt;br/&gt;If the user clicks on &lt;em&gt;Cancel&lt;/em&gt; in the MessageBox, the Form should be closed without saving the data.&lt;br/&gt;To archive this a flag &lt;em&gt;_closeAfterCancel&lt;/em&gt; is set to true. Basically you will just call &lt;em&gt;Inspector.Close(Outlook.OlInspectorClose.OlDiscard)&lt;/em&gt; in the Item_Close event.
&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; This Method is called when the Item is going to be closed
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;param name="Cancel"&gt;&lt;/param&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt; Item_Close(&lt;span style="color:blue"&gt;ref&lt;/span&gt;
			&lt;span style="color:blue"&gt;bool&lt;/span&gt; Cancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (!_closeAfterCancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        Cancel = !Validate(&lt;span style="color:blue"&gt;true&lt;/span&gt;); &lt;span style="color:green"&gt;// MessageBox with OK + Cancel Button
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_closeAfterCancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;            Inspector.Close(Outlook.&lt;span style="color:#2b91af"&gt;OlInspectorClose&lt;/span&gt;.olDiscard); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;I found out that this just won't work. Instead the &lt;em&gt;AskForSave&lt;/em&gt; Dialog is displayed to the user.&lt;br/&gt;Also there where some changes in the Outlook Object Model that prvents that methods working correctly in the Item_Close event, see &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;929593"&gt;KB929593&lt;/a&gt;.&lt;br/&gt;So I tried to get it working using a timer, and call Inspector.Close in the Timer_Tick event.&lt;br/&gt;See the modified code:
&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; Used to call Close() out of the Item_Close event.
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:#2b91af"&gt;Timer&lt;/span&gt; _closeTimer;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt; This Method is called when the Item is going to be closed
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;/summary&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:gray; font-family:Lucida Console; font-size:8pt"&gt;///&lt;span style="color:green"&gt;
				&lt;span style="color:gray"&gt;&lt;param name="Cancel"&gt;&lt;/param&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt; Item_Close(&lt;span style="color:blue"&gt;ref&lt;/span&gt;
			&lt;span style="color:blue"&gt;bool&lt;/span&gt; Cancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (!_closeAfterCancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        Cancel = !Validate(&lt;span style="color:blue"&gt;true&lt;/span&gt;); &lt;span style="color:green"&gt;// MessageBox with OK + Cancel Button
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (_closeAfterCancel) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;            _closeTimer = &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;Timer&lt;/span&gt;();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;            _closeTimer.Tick += &lt;span style="color:blue"&gt;new&lt;/span&gt;
			&lt;span style="color:#2b91af"&gt;EventHandler&lt;/span&gt;(_closeTimer_Tick);
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;            _closeTimer.Start();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;        }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    }
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt; _closeTimer_Tick(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;EventArgs&lt;/span&gt; e) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeTimer.Stop();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeTimer.Dispose(); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// Close the current Form without saving
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    Inspector.Close(Outlook.&lt;span style="color:#2b91af"&gt;OlInspectorClose&lt;/span&gt;.olDiscard); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;When running this code:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;no AskForSave dialog is shown
&lt;/li&gt;&lt;li&gt;the Form is closed
&lt;/li&gt;&lt;li&gt;the data is saved
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It just won't work.&lt;br/&gt;The only way to get it working is to call the Item.Close method instead.&lt;br/&gt;So – the correct method would look like this:
&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt; _closeTimer_Tick(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;EventArgs&lt;/span&gt; e) {
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeTimer.Stop();
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    _closeTimer.Dispose(); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;
			&lt;span style="color:green"&gt;// Close the current Form without saving
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;    Item.Close(Outlook.&lt;span style="color:#2b91af"&gt;OlInspectorClose&lt;/span&gt;.olDiscard); 
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Lucida Console; font-size:8pt"&gt;}
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Only this way you can correctly close the current Form without saving the data.
&lt;/p&gt;&lt;p&gt;My special thanks to &lt;a href="http://www.slovaktech.com/"&gt;Ken Slovak&lt;/a&gt; who pointed me to the correct solution.
&lt;/p&gt;&lt;p&gt;Greets – Helmut Obertanner&lt;br/&gt;http://www.x4u.de
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;</description>
      <link>http://www.outlooksharp.de/Home/tabid/36/EntryId/55/Closing-an-Outlook-Inspector-by-code.aspx</link>
      <author>Helmut Obertanner</author>
      <comments>http://www.outlooksharp.de/Home/tabid/36/EntryId/55/Closing-an-Outlook-Inspector-by-code.aspx#Comments</comments>
      <guid isPermaLink="true">http://www.outlooksharp.de/Home/tabid/36/EntryId/55/Closing-an-Outlook-Inspector-by-code.aspx</guid>
      <pubDate>Fri, 08 Jan 2010 19:35:04 GMT</pubDate>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.x4u.de/DesktopModules/Blog/Trackback.aspx?id=55</trackback:ping>
    </item>
  </channel>
</rss>