c# - Office 2010 monitoring calendar events -


hey have following code in vb.net translated c# found on internet monitoring outlook calendar events (add, modify , delete).

the code is:

public class thisaddin     private sub thisaddin(sender object, e system.eventargs) handles me.startup         dim monitor new calendarmonitor(me.application.activeexplorer())          addhandler monitor.appointmentadded, addressof monitor_appointmentadded         addhandler monitor.appointmentmodified, addressof monitor_appointmentmodified         addhandler monitor.appointmentdeleting, addressof monitor_appointmentdeleting     end sub  ...etc etc... end class 

=======================

public class calendarmonitor     private _explorer explorer     private _folderpaths list(of string)     private _calendarfolders list(of mapifolder)     private _calendaritems list(of items)     private _deleteditemsfolder mapifolder      public event appointmentadded eventhandler(of eventargs(of appointmentitem))     public event appointmentmodified eventhandler(of eventargs(of appointmentitem))     public event appointmentdeleting eventhandler(of canceleventargs(of appointmentitem))      public sub new(anexplorer explorer)         _folderpaths = new list(of string)()         _calendarfolders = new list(of mapifolder)()         _calendaritems = new list(of items)()          _explorer = anexplorer         _explorer.beforefolderswitch += new explorerevents_10_beforefolderswitcheventhandler(addressof explorer_beforefolderswitch)          dim session [namespace] = _explorer.session         try             _deleteditemsfolder = session.getdefaultfolder(oldefaultfolders.olfolderdeleteditems)             hookupdefaultcalendarevents(session)                     marshal.releasecomobject(session)             session = nothing         end try     end sub      private sub hookupdefaultcalendarevents(asession [namespace])         dim folder mapifolder = asession.getdefaultfolder(oldefaultfolders.olfoldercalendar)         if folder isnot nothing             try                 hookupcalendarevents(folder)                             marshal.releasecomobject(folder)                 folder = nothing             end try         end if     end sub      private sub explorer_beforefolderswitch(anewfolder object, byref cancel boolean)         dim folder mapifolder = trycast(anewfolder, mapifolder)         '         ' hookup events other calendar folder opened.         '         if folder isnot nothing             try                 if folder.defaultitemtype = olitemtype.olappointmentitem                     hookupcalendarevents(folder)                 end if                             marshal.releasecomobject(folder)                 folder = nothing             end try         end if     end sub      private sub hookupcalendarevents(acalendarfolder mapifolder)         if acalendarfolder.defaultitemtype <> olitemtype.olappointmentitem             throw new argumentexception("the mapifolder must use " + "appointmentitems default type.")         end if          if (_folderpaths.contains(acalendarfolder.folderpath) = false) andalso (isuserscalendar(acalendarfolder))             dim items items = acalendarfolder.items              _folderpaths.add(acalendarfolder.folderpath)             _calendarfolders.add(acalendarfolder)             _calendaritems.add(items)              items.beforeitemmove += new mapifolderevents_12_beforeitemmoveeventhandler(addressof calendar_beforeitemmove)             items.itemchange += new itemsevents_itemchangeeventhandler(addressof calendaritems_itemchange)             items.itemadd += new itemsevents_itemaddeventhandler(addressof calendaritems_itemadd)         end if     end sub      private sub calendaritems_itemadd(anitem object)         dim appointment appointmentitem = trycast(anitem, appointmentitem)         if appointment isnot nothing             try                 raiseevent appointmentadded(me, new eventargs(of appointmentitem)(appointment))                             marshal.releasecomobject(appointment)                 appointment = nothing             end try         end if     end sub      private sub calendaritems_itemchange(anitem object)         dim appointment appointmentitem = trycast(anitem, appointmentitem)         if appointment isnot nothing             try                 raiseevent appointmentmodified(me, new eventargs(of appointmentitem)(appointment))                             marshal.releasecomobject(appointment)                 appointment = nothing             end try         end if     end sub      private sub calendar_beforeitemmove(anitem object, amovetofolder mapifolder, byref cancel boolean)         if (amovetofolder nothing) orelse (isdeleteditemsfolder(amovetofolder))             dim appointment appointmentitem = trycast(anitem, appointmentitem)              if appointment isnot nothing                 try                     'if appointmentdeleting isnot nothing                     '                     ' listeners appointmentdeleting event can cancel move operation if moving                     ' deleted items folder.                     '                     dim args new canceleventargs(of appointmentitem)(appointment)                     raiseevent appointmentdeleting(me, args)                      cancel = args.cancel                     'end if                                     marshal.releasecomobject(appointment)                     appointment = nothing                 end try             end if         end if     end sub      private function isuserscalendar(afolder mapifolder) boolean         '         ' based purely on observations far - better way?         '         return (afolder.store isnot nothing)     end function      private function isdeleteditemsfolder(afolder mapifolder) boolean         return (afolder.entryid = _deleteditemsfolder.entryid)     end function end class 

and hitting error on line has code:

_explorer.beforefolderswitch += new explorerevents_10_beforefolderswitcheventhandler(addressof explorer_beforefolderswitch) 

the error is:

an exception of type 'system.missingmemberexception' occurred in microsoft.visualbasic.dll not handled in user code

additional information: public member 'beforefolderswitch' on type 'explorerclass' not found.

what need in order working in vb.net?

you need convert vb's event wireup format:

addhandler _explorer.beforefolderswitch, addressof explorer_beforefolderswitch 

note explicit delegate construction unnecessary.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -