Word에 사용자 지정 리본이 있습니다. 리본에는 하나의 comboBox가 있습니다. comboBox_recentConditions은 디자이너를 사용하여 정의되었으므로 초기화시 초기화되고로드시 비어 있습니다. 이제는 Application_WindowActivate 이벤트가 발생할 때마다이 comboBox를 동적으로 설정하려고합니다.C# VSTO - RibbonControl을 동적으로 설정합니다.
각 Word 문서 RibbonControls라는 클래스의 자체 인스턴스가 있습니다
static void Application_WindowActivate(Document doc, Window Wn)
{
Globals.Ribbons.SourceRibbon.comboBox_recentConditions = WordGate.docRibbonControls.RecentConditionComboBox;
}
는 리본 콤보 있다는 것입니다 문제 : Application_WindowActivate 이벤트 지금
class RibbonControls
{
private RibbonComboBox recentConditionComboBox;
public RibbonControls()
{
this.recentConditionComboBox = new RibbonComboBox();
}
public RibbonComboBox RecentConditionComboBox
{
get
{
return recentConditionComboBox;
}
set
{
recentConditionComboBox = value;
}
}
}
을 나는 다음을 수행 컨트롤은 변경되지 않고 Application_WindowActivate가 호출 된 후에도 항상 비어 있습니다. 런타임에 각 문서에 실제로 해당 항목이 포함 된 자체 comboBox가 있는지 확인하기 위해 테스트를 진행했습니다. 내가 무엇이 누락 되었습니까?
제 질문을 정리하려면 : 제가 comboBox.Items에 3 가지 항목이 있다고 가정 해 봅시다.
MessageBox.Show(Globals.Ribbons.SourceRibbon.comboBox_recentConditions.Items.Count.ToString());
을 Application_WindowActivate
의 끝에서이 숫자 3.
감사를 인쇄합니다 : 그것을 클릭하면 내가 이것을 추가하면 나는 아무것도 볼 수 있지만.
시도 : Globals.Ribbons.SourceRibbon.RibbonUI.InvalidateControl ("comboBox_recentConditions"); Globals.Ribbons.SourceRibbon.RibbonUI.Invalidate(); 하지만 작동하지 않습니다. – etaiso
Globals.ThisAddin.Ribbon.Invalidate()이어야합니다. – Kiru
리본이 ThisAddIn에 없습니다. – etaiso