private void CreateUIToolBars(Dictionary <string, NBGIS.PluginEngine.IToolBarDef> Toolbars) { foreach (KeyValuePair <string, NBGIS.PluginEngine.IToolBarDef> toolbar in Toolbars) { NBGIS.PluginEngine.IToolBarDef nbToolbar = toolbar.Value; Janus.Windows.UI.CommandBars.UICommandBar uiToolbar = new Janus.Windows.UI.CommandBars.UICommandBar(); uiToolbar.CommandManager = this.uiCommandManager; uiToolbar.CommandsStyle = Janus.Windows.UI.CommandBars.CommandStyle.TextImage; uiToolbar.Name = nbToolbar.Name; uiToolbar.Text = nbToolbar.Caption; //Tag=nbToolbar? uiToolbar.Tag = nbToolbar; uiToolbar.Key = nbToolbar.ToString(); uiToolbar.Visible = nbToolbar.IsVisible; //将Command和Tool插入到Toolbar中 NBGIS.PluginEngine.IItemDef itemDef = new NBGIS.PluginEngine.ItemDef(); for (int i = 0; i < nbToolbar.ItemCount; i++) { nbToolbar.GetItemInfo(i, itemDef); Janus.Windows.UI.CommandBars.UICommand uiCmd = null; //如果一个ICommand对象由于某些原因并没有正确产生, //而在Toolbar或Menu中又存在它的名称 //获取该ICommand对象就会出现异常 try { //uiCmd = this.uiCommandManager.Commands[itemDef.ID]; uiCmd = this.uiCommandManager.Commands[i]; } catch (Exception ex) { MessageBox.Show(itemDef.ID + " Plugin" + " didn't load.\n" + " Message: " + ex.Message); } if (uiCmd != null) { if (itemDef.Group) { uiToolbar.Commands.AddSeparator(); } uiToolbar.Commands.Add(uiCmd); } } } }
/// <summary> /// 创建ToolBar的UI层对象 /// </summary> /// <param name="toolBars"></param> private void CreateToolBars(Dictionary <string, NBGIS.PluginEngine.IToolBarDef> toolBars) { foreach (KeyValuePair <string, NBGIS.PluginEngine.IToolBarDef> toolbar in toolBars) { NBGIS.PluginEngine.IToolBarDef nbtoolbar = toolbar.Value; //产生UICommandBar对象 ToolStrip UIToolbar = new ToolStrip(); //设置UICommandBar的属性 //UIToolbar.CommandManager = this.uiCommandManager; UIToolbar.Name = nbtoolbar.Name; UIToolbar.Text = nbtoolbar.Caption; UIToolbar.Tag = nbtoolbar; UIToolbar.AccessibleName = nbtoolbar.ToString(); //将Command和Tool插入到ToolBar中 NBGIS.PluginEngine.ItemDef itemDef = new ItemDef(); for (int i = 0; i < nbtoolbar.ItemCount; i++) { nbtoolbar.GetItemInfo(i, itemDef); NBGIS.PluginEngine.ICommand nbcmd = m_DicPlugins[itemDef.ID] as NBGIS.PluginEngine.ICommand; if (nbcmd != null) { //产生一个UICommand对象 ToolStripButton UICommand = new ToolStripButton(); UICommand.DisplayStyle = ToolStripItemDisplayStyle.Image; //根据ICommand的信息设置UICommand的属性 UICommand.ToolTipText = nbcmd.Tooltip; UICommand.Text = nbcmd.Caption; UICommand.Image = nbcmd.Bitmap; UICommand.AccessibleName = nbcmd.ToString(); UICommand.Enabled = nbcmd.Enabled; //UICommand的Checked与command的属性一致 UICommand.Checked = nbcmd.Checked; //产生UICommand是调用OnCreate方法,将主框架对象传递给插件对象 nbcmd.OnCreate(this._App); //使用委托机制处理Command的事件 //所有的UICommand对象Click事件均使用this.Command_Click方法处理 UICommand.Click += new EventHandler(UICommand_Click); //将生成的UICommand添加到CommandManager中 //如果分组,则在该UI对象前加上一个分隔符 if (itemDef.Group) { UIToolbar.Items.Add(new ToolStripSeparator()); } UIToolbar.Items.Add(UICommand); } //获得一个ITool对象 NBGIS.PluginEngine.ITool nbtool = m_DicPlugins[itemDef.ID] as NBGIS.PluginEngine.ITool; if (nbtool != null) { //产生一个ITool对象 ToolStripButton UITool = new ToolStripButton(); UITool.DisplayStyle = ToolStripItemDisplayStyle.Image; //根据ITool的信息设置UITool的属性 UITool.ToolTipText = nbtool.Tooltip; UITool.Text = nbtool.Caption; UITool.Image = nbtool.Bitmap; UITool.AccessibleName = nbtool.ToString(); //UITool.Key = nbtool.ToString(); UITool.Enabled = nbtool.Enabled; UITool.Checked = nbtool.Checked; //产生UICommand是调用OnCreate方法,将主框架对象传递给插件对象 nbtool.OnCreate(this._App); //使用委托机制处理Command的事件 //所有的UICommand对象Click事件均使用this.UITool_Click方法处理 UITool.Click += new EventHandler(UITool_Click); //将生成的UICommand添加到CommandManager中 if (itemDef.Group) { UIToolbar.Items.Add(new ToolStripSeparator()); } UIToolbar.Items.Add(UITool); } } UIToolbar.Dock = DockStyle.Top; this.toolStripContainer1.TopToolStripPanel.Controls.Add(UIToolbar); } }