2012-10-24 5 views
0

리본 XML 및 VS 2010을 사용하여 Outlook 2010에 사용자 정의 단추 컨트롤을 작성하지만 버튼 상태를 새로 고치는 데 문제가 있습니다.Inspector가 다시 "활성화 됨"이 아니면 ribbon.InvalidateControl()이 작동하지 않습니다.

idMso = "TabReadMessage"(Reading email window/inspector)에 2 개의 버튼을 만들었습니다. 버튼에 대한

리본 XML 코드 :

<tab idMso="TabReadMessage"> 
    <group id="MyGroup" label="My Label"> 
    <splitButton id="MySplitButton" keytip="QS" size="large"> 
      <button id="SplitButton1" onAction="SplitButton1_Click" label="SplitButton 1" /> 
      <menu id="SplitButton_mnu" keytip="QS"> 
       <button id="Button1" onAction="Button1_Click" label="Button 1" /> 
       <button id="Button2" onAction="Button2_Click" label="Button 2"/> 
      </menu> 
    </splitButton> 
    <toggleButton id="MyToggleButton" onAction="MyToggleButton_Click" size="large" label="Toggle Button" getEnabled="GetEnabledToggleButton" /> 
    </group> 
</tab> 

분할 버튼을 클릭 콜백 :

Public Sub SplitButton1_Click(ByVal control As IRibbonControl) 
    ribbon.InvalidateControl("MyToggleButton") 
End Sub 

토글 버튼 getEnabled 콜백 이벤트 :

Public Function GetEnabledToggleButton(ByVal control As IRibbonControl) As Boolean 
    Return False 
End Function 

내가 달성하고자하는 것입니다 SplitButton을 클릭하면 ToggleButton이 비활성화되고 ribbon.InvalidateContro가 사용됩니다. l ("MyToggleButton")을 사용하여 컨트롤을 무효화하면 ToggleButton에 대한 getEnabled 콜백 이벤트가 발생하지만 그렇지 않습니다. 그러나 검사기 창을 클릭하고 검사기 창을 다시 클릭하면 상태가 변경되고 작동합니다. InvalidateControl()이 컨트롤의 상태를 즉시 변경한다고 생각 했습니까?

감사합니다.

답변

0

Addin 클래스에서 서브 루틴을 만들고,이 서브 루틴에서 MyToggleButton 컨트롤을 무효화합니다.

SplitButton1_Click() 이벤트는 서브 루틴을 호출하므로 MyToggleButton 컨트롤이 무효화됩니다.이 작업은 더 좋고 권장되는 방법이 있는지 확실하지 않습니다.