2013-04-10 4 views
3

Item_Send에서 Cancel을 true로 설정하면 모임 창이 닫히기 때문에 모임 요청의 Item_Write 이벤트 처리기에서 Cancel 확인을 설정하고 있습니다. 내가 뭘 하려는지 리본 메뉴 (내 질문에 중요하지 않은 버튼 세부 사항) 사용자 정의 버튼을 사용하여 일반적으로 처리받을받는 사람이 있다는 것을 사용자에게 묻습니다. 어쨌든, Item_Write 이벤트를 취소하려고하면 모임 알림이 보내집니다. 아무리 노력해도 Ref Cancel을 true로 설정하더라도 모임 알림이 나가는 것을 막을 수는 없습니다. Item_Send에서 취소하면 사용자가 원하지 않는 창이 닫힙니다. 이 시점에서 생각할 수있는 유일한 것은 아마도 사용자 지정 양식 영역 필드 속성을 AppointmentItem의 정의 된 사용자 지정 속성에 저장하고 Application_Item_Load 이벤트를 트리거하는 requestDetailsRegion.SaveRequestDetailsToLocalOutlookItemProperties() 일 것입니다. 그러면 Outlook에서 모임 초대를 보내도록 요청하는 것입니다. 보류중인 것처럼 알림. Outlook 2010에서 실행하고 있습니다. 미리 감사드립니다.Meeting Notice Item_Write에 취소 설정을 했음에도 불구하고 보내진 경우

는 여기에 몇 가지 예제 코드입니다 :

void Item_Write(ref bool Cancel)   
{  

      Cancel = CancelInvite(Cancel);     
} 

     private bool CancelInvite(bool Cancel) 
     { 

      Inspector activeInspector = Globals.ThisAddIn.Application.ActiveInspector(); 
      WindowFormRegionCollection formRegions = Globals.FormRegions[activeInspector]; 
      RequestDetailsFormRegion requestDetailsRegion = formRegions.RequestDetailsForm; 


       // Add request form details to meeting item. 
       requestDetailsRegion.SaveRequestDetailsToLocalOutlookItemProperties(); 

       // Checking if there's an incomplete form request pending submission 
       if (requestDetailsRegion.txtFileName_Hidden.TextLength == 0 && 
        appointmentItem != null && appointmentItem.MeetingStatus != OlMeetingStatus.olMeetingCanceled) 
       { 
        Persons meetingRecipients = new Persons(); 



        foreach (Outlook.Recipient recipient in appointmentItem.Recipients) 
         if (recipient.Address != activeInspector.Session.CurrentUser.Address) 
          meetingRecipients.Add(new MeetingRecipient(recipient)); 

        if (meetingRecipients.ContainsSpecialRecipients) 
        {       
         CustomDialog customDialog = new CustomDialog(); 
         customDialog.OkButtonText = messageBoxTextStatusOK; 
         customDialog.CancelButtonText = messageBoxTextStatusCancel; 

         DialogResult dialogResult = customDialog.ShowDialog(); 

         if (dialogResult == DialogResult.Cancel) 
         { 
          Cancel = true; 
         } 
         else 
         { 
          Cancel = false; 
         }  

         customDialog.Close(); 
        } 
       }     

      return Cancel; 
     } 

    public void SaveRequestDetailsToLocalOutlookItemProperties() 
     { 
      if (this.OutlookItem is Outlook.AppointmentItem) 
      { 
       Outlook.AppointmentItem appointmentItem = (Outlook.AppointmentItem)this.OutlookItem; 

       // Checking if organizer already cancelled meeting. If so, then no need to update apppointment item properties. 
       if (appointmentItem.MeetingStatus != Outlook.OlMeetingStatus.olMeetingCanceled) 
       { 

        appointmentItem.ItemProperties[RequestSubmitted].Value = chkSubmitted.Checked; // Hidden 
        appointmentItem.ItemProperties[Filename].Value = txtFileName_Hidden.Text; // Hidden 

        appointmentItem.ItemProperties[ReasonForVisit].Value = txtReason.Text; 

    // SPARING SIMILAR LINES OF CODE 

    ... 
        chkSaved.Checked = true; 
       } 
      } 

답변

1

당신은 진정한

에 응답 드미트리에 대한
void Item_Write(ref bool Cancel)   
{  

      this.cancelInviteResult = CancelInvite(Cancel); 
      Cancel = this.cancelInviteResult; 
} 
+1

감사를 (REF) 취소 매개 변수를 설정하지 않습니다. 나는 실제로 그렇게한다. 코드 예제를 업데이트 할 것입니다. 취소를 true로 설정 했음에도 불구하고 발생합니다. 무엇부터 시작해야 할까? – jive137

+0

내가 "일이 ..."라고 말할 때 명확하게하기 위해 취소 알림을 true로 설정 했음에도 불구하고 모임 알림을 보냈습니다. 다시 한번 감사드립니다. – jive137

+0

Application.ItemSend 이벤트 처리기 란 무엇입니까? –

관련 문제