2014-02-18 3 views
3

AppointmentItem의 제목 필드에 실제 입력 된 텍스트에 액세스하는 데 문제가 있습니다. 리본에서 사용자 지정 단추의 콜백을 가진 Outlook 2010 추가 기능을 만들었습니다. 피사체를 입력 한 직후에 버튼을 클릭하고 (컨트롤 포커스를 변경하지 않은 경우)을 제외한 주제 필드 의 값을 얻을 수 있습니다. 이 경우 필자는 최근에 입력 한 값이 아니라 Subject의 이전 값을 가져옵니다.Outlook AppointmentItem의 제목 줄의 가장 최신 값 가져 오기

public void ToggleMeetingPlace_Callback(Office.IRibbonControl control) 
    { 
     if ((control!=null)&&(control.Id == "toggleMeetingPlace")) 
     { 
      var item = control.Context as Outlook.Inspector; 
      if ((item != null) && (item.CurrentItem != null)) 
      { 
       Outlook.AppointmentItem m_item = item.CurrentItem as Outlook.AppointmentItem; 
       string subject = m_item.Subject; 
       // some action 
      } 
     } 
    } 

그러나 나는 시계 창에서 몇 가지 흥미로운 동작을 볼 수 디버그 시작하는 경우 (새로 만든 모임 초대에 대해 내가 널 값을 얻을 수) : - 직접 m_item.Subject 여전히 이전 값 을 돌려보고 - 하지만 m_item에 대한 감시를 설정 한 다음 동적 멤버를 모두 확장하면 갑자기 값이 현재 텍스트로 업데이트됩니다.

이 경우의 동적 뷰는 편리한 부작용을 가지고 있다고 생각합니다. 코드에서이를 수행하는 방법을 알 수 없습니다.

+0

동일한 문제가 발생합니다. 해결책을 찾았습니까? – mnkypete

+0

지금까지 찾은 유일한 해결책은 창 API를 통해 텍스트를 직접 가져 오는 것입니다. 창 트리에서 텍스트 상자의 HWND를 조회 한 다음 Win32 API의 GetWindowText를 사용하여 내용을 검색해야합니다. 실제로 작동하지만 매우 해커입니다 .. – mnkypete

답변

0

커서가 항목의 제목 필드에 배치되어 있기 때문에 발생합니다. 제목 필드에서 포커스를 제거하면 작동합니다.

예 동적보기를 확장하면 모든 갑작스런 제목 텍스트가 표시되지만 지연 또는 내가 모르는 뭔가 때문일 수 있습니다.