加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – RibbonDropDown丢失项目

发布时间:2020-12-15 21:49:49 所属栏目:百科 来源:网络整理
导读:我将项目添加到运行时由新电子邮件检查器使用的RibbonDropDown.我在启动时添加项目,并根据需要刷新列表(当用户按下按钮时) public void RefreshListNames(){ Logger.Log("Refresh Mail Lists"); Globals.Ribbons.Ribbon1.rddListNames.Items.Clear(); foreac
我将项目添加到运行时由新电子邮件检查器使用的RibbonDropDown.我在启动时添加项目,并根据需要刷新列表(当用户按下按钮时)

public void RefreshListNames()
{
    Logger.Log("Refresh Mail Lists");

    Globals.Ribbons.Ribbon1.rddListNames.Items.Clear();
    foreach (KeyValuePair<Guid,string> kvp in _dda.GetMarketingListNames())
    {
        Microsoft.Office.Tools.Ribbon.RibbonDropDownItem dd = 
            Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();

        dd.Tag = kvp.Key;
        dd.Label = kvp.Value;

        Logger.Log("Adding " + dd.Label);

        Globals.Ribbons.Ribbon1.rddListNames.Items.Add(dd);

    }

    Globals.Ribbons.Ribbon1.rddListNames.ResumeLayout();
}

注意:rddListNames是RibbonDropDown

此方法在ThisAddIn_Startup方法中调用,并在启动时进行核心填充.但是,任何新的邮件窗口都会以空白下拉列表结束 – 没有项目.即使刷新列表也不会再次添加项目.

我添加了一些日志记录:它显示按下’刷新按钮’时该方法正在运行:

23/04/2013 14:36:43 - Refresh Mail Lists 
23/04/2013 14:36:45 - Adding Marketing List - Dynamic 
23/04/2013 14:36:45 - Adding Marketing List - Bs 
23/04/2013 14:36:45 - Adding Marketing List - As

为什么下拉不断丢失物品?为什么他们不回来,即使我明确刷新它们?

解决方法

如果对功能区UI进行控制修改,则需要通过 IRibbonControl.Invalidate()IRibbonControl.InvalidateControl使控制缓存无效.这将触发Ribbon元素的重绘.

Globals.Ribbons.Ribbon1.Invalidate();
// or...
Globals.Ribbons.Ribbon1.InvalidateControl("ddMarketingList");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读