C# Ribbon功能区,控制控件的显示隐藏

需求:excel插件开发,动态改变Ribbon功能区控件的显示隐藏问题
开发背景:ExcelDna
参考vba的代码
原文链接:https://blog.csdn.net/lassewang/article/details/8268813
xml文件设计Excel功能区界面

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" loadImage="LoadImage" onLoad="ribbonLoaded">
  <!-- 在 [XML]中被定义为 空白(whitespace)字符:空格 (&#x0020;) Tab (&#x0009;) 回车 (&#x000D;) 换行 (&#x000A;)-->
  <ribbon startFromScratch="false">
    <tabs>
      <tab id="CustomTab" label="MyDnaTab" insertAfterMso="TabHome">
        <group id="MyGroup" label="MenuAndButton">         
          <button id="TestRunTag" label="Test Run Tag" image="office.png" size="normal" onAction="RunTagMacro" tag="CmdName" />
          <editBox id="UserID" label="账号:" image="office.png" tag="CmdUserID" onChange="EditUserId" />
          <editBox id="Password" label="密码:" image="office.png" tag="CmdPassword" onChange="EditPassword" />
          <separator id="separator2" />
          <button id="Login" label="登录" onAction="OnLogin" />
          <button id="Exit" label="退出"/>          
        </group>        
        <group id="InstitutionGroup" label="InstitutionGroup" getVisible="InstitutionGroup_getVisible">
          --<button id="TestButtonAll" label="测试按钮" size="large" onAction="OnTestButton" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

在需要控制的地方写代码

using ExcelDna.Integration;
using ExcelDna.Integration.CustomUI;
namespace TestDemo
{
	[ComVisible(true)]
    public class RibbonUI : ExcelRibbon
    {
        private static IRibbonUI customRibbon;
        //InstitutionGroup是否隐藏
        private bool GroupIsVisible;
        /// <summary>
        /// ribbon callbock,get IRibbonUI object
        /// </summary>
        public void ribbonLoaded(IRibbonUI ribbon)
        {
            GroupIsVisible = true;
            customRibbon = ribbon;
        }
        /// <summary>
        /// 点击登录按钮的时候改变显示隐藏的属性
        /// </summary>
        /// <param name="control"></param>
       	public void OnLogin(IRibbonControl control)
        {
            try
            {
                string userName = Helper.PublicHelper.GetConfigValue("userName");
                if (userName == "123")
                {
                    //用户有权限的时候显示
                    GroupIsVisible = true;
                    //使所有用户界面上的控件失效并随后刷新 UI。
                    customRibbon.Invalidate();

                }
                else
                {                    
                    GroupIsVisible = false;
                    customRibbon.Invalidate();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }
        /// <summary>
        /// 隐藏控件的回调方法
        /// </summary>
        /// <param name="control"></param>
        /// <returns></returns>
        public bool InstitutionGroup_getVisible(IRibbonControl control)
        {
            return GroupIsVisible;
        }        
    }
}

写InstitutionGroup_getVisible回调方法的时候走了一段弯路,vba中有两个参数,我照样写下来打断点进不去,方法不起效果,所以这里记录下来,方便提醒自己。也希望能帮到大家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值