SmartClient Software factory中的Composite UI Application Block(Cab)技术了解(四):Command

Command描述和实例

       在系统开发中常遇到对控件的事件委托问题,某个事件需要在容器内进行共享,那就需要通过Command的应用来实现。

1.         创建一个CommandModule

2.5.1

       创建一个XML文件准备把需要添加的MenuItem信息放进去:

<Maps>

  <list Item="FileItem" Label="One" Name="ClickOne"/>

  <list Item="FileItem" Label="Two" Name="ClickTwo"/>

  <list Item="FileItem" Label="Three" Name="ClickThree"/>

  <list Item="FileItem" Label="Four" Name="ClickFour"/>

</Maps>

     然后创建对应的类ToolListItemToolListItemMap用于添加MenuItem的控制类,这样,前期的工作已经弄好,然后就要处理如何把这些ITEM和对应的触发事件放到Module里了。

2.       ModuleController中添加以下代码用于MenuItem的添加和事件的绑定:

private void ExtendMenu()

        {

            ToolListItemMap map = new ToolListItemMap();

 

            foreach (ToolListItem item in map.MenuListMap)

            {

                ToolStripMenuItem menuitem = new ToolStripMenuItem(item.Label);

                menuitem.Name = item.Name;

 

                if (WorkItem.UIExtensionSites.Contains("FileItem"))

                {

                    UIExtensionSite site = WorkItem.UIExtensionSites["FileItem"];

                    site.Add(menuitem);

                    WorkItem.Commands[item.CommandName].AddInvoker(menuitem, "Click");

                }

            }

 

        }   

        #region 定义COMMAND事件

        [CommandHandler(CommandNames.OneCmd)]

        public void oneCmd(object sender, EventArgs e)

        {

            MessageBox.Show("show one!");

 

        }

        [CommandHandler(CommandNames.TwoCmd)]

        public void twoCmd(object sender, EventArgs e)

        {

            MessageBox.Show("show two!");

        }

        [CommandHandler(CommandNames.ThreeCmd)]

        public void threeCmd(object sender, EventArgs e)

        {

            MessageBox.Show("show three!");

        }

        [CommandHandler(CommandNames.FourCmd)]

        public void fourCmd(object sender, EventArgs e)

        {

            MessageBox.Show("show four!");

        }

        #endregion

其中WorkItem.Commands[item.CommandName].AddInvoker(menuitem, "Click");这句是把事件添加到容器的关键。

3.       保存后运行程序显示为图 2.5.2 和图2.5.3所示。

2.5.2

2.5.3

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值