/// <summary> /// 启动对象 /// </summary> public void Start() { if (this.DesignMode == true) { return; } WriterCommandEventArgs args = new WriterCommandEventArgs(); args.EditorControl = this.EditControl; args.Document = this.Document; this.Document.FixDomState(); foreach (object control in this._CommandTable.Keys) { string actionName = _CommandTable[control]; if (actionName == null || actionName.Trim().Length == 0) { continue; } actionName = actionName.Trim(); if (_BindingEventControls.Contains(control) == false) { BindingEvent(control); } WriterCommand cmd = this.CommandContainer.GetCommand(actionName); if (cmd != null) { // 初始化命令绑定的用户界面控件 args.UIElement = control; args.Mode = WriterCommandEventMode.InitalizeUIElement; cmd.Invoke(args); } }//foreach this.UpdateBindingControlStatus(); }
/// <summary> /// 判断指定名称的命令的状态是否处于选中状态 /// </summary> /// <param name="commandName">命令名称</param> /// <returns>该命令是否处于选中状态</returns> public bool IsCommandChecked(string commandName) { WriterCommand cmd = this.CommandContainer.GetCommand(commandName); if (cmd != null) { WriterCommandEventArgs args = new WriterCommandEventArgs( this.EditControl, this.Document, WriterCommandEventMode.QueryState); args.ShowUI = true; cmd.Invoke(args); return(args.Checked); } return(false); }
private void UpdateControlStates(object control, WriterCommand command) { if (control == null) { throw new ArgumentNullException("control"); } WriterCommandEventArgs args = new WriterCommandEventArgs( this.EditControl, this.Document, WriterCommandEventMode.QueryState); args.UIElement = control; command.Invoke(args); if (control is System.Windows.Forms.Control) { System.Windows.Forms.Control ctl = (System.Windows.Forms.Control)control; if (command == null) { ctl.Enabled = false; ctl.Visible = false; } else { ctl.Enabled = args.Enabled; ctl.Visible = args.Visible; if (ctl is CheckBox) { ((CheckBox)ctl).Checked = args.Checked; } else if (ctl is RadioButton) { ((RadioButton)ctl).Checked = args.Checked; } } } else if (control is System.Windows.Forms.ToolStripItem) { System.Windows.Forms.ToolStripItem item = (System.Windows.Forms.ToolStripItem)control; if (command == null) { item.Enabled = false; item.Visible = false; } else { item.Enabled = args.Enabled; item.Visible = args.Visible; if (item is System.Windows.Forms.ToolStripButton) { ((ToolStripButton)item).Checked = args.Checked; } else if (item is ToolStripMenuItem) { ((ToolStripMenuItem)item).Checked = args.Checked; } else if (item is ToolStripComboBox) { ToolStripComboBox cbo = (ToolStripComboBox)item; cbo.Text = Convert.ToString(args.Parameter); } else if (item is ToolStripTextBox) { ToolStripTextBox txt = (ToolStripTextBox)item; txt.Text = Convert.ToString(args.Parameter); } } } else if (control is MenuItem) { MenuItem item = (MenuItem)control; if (command == null) { item.Enabled = false; item.Visible = false; } else { item.Enabled = args.Enabled; item.Visible = args.Visible; item.Checked = args.Checked; } } args.Mode = WriterCommandEventMode.UpdateUIElement; args.UIElement = control; command.Invoke(args); }
private object InnerExecuteCommand( WriterCommand cmd, object uiControl, EventArgs eventArgs, bool showUI, object parameter) { WriterCommandEventArgs cmdArgs = new WriterCommandEventArgs(); cmdArgs.EditorControl = this.EditControl; if (this.EditControl != null) { cmdArgs.Host = this.EditControl.AppHost; } cmdArgs.Name = cmd.Name; cmdArgs.Document = this.Document; cmdArgs.UIElement = uiControl; cmdArgs.UIEventArgs = eventArgs; cmdArgs.ShowUI = showUI; cmdArgs.Parameter = parameter; cmdArgs.Mode = WriterCommandEventMode.QueryState; cmd.Invoke(cmdArgs); this.ReadControlState(cmd.Name, cmdArgs); if (cmdArgs.Enabled) { _IsExecutingCommand = true; cmdArgs.Mode = WriterCommandEventMode.Invoke; cmdArgs.Cancel = false; if (this.EditControl == null) { try { cmd.Invoke(cmdArgs); } finally { _IsExecutingCommand = false; } } else { try { cmd.Invoke(cmdArgs); this.EditControl.OnAfterExecuteCommand(cmdArgs); } catch (Exception ext) { this.EditControl.OnCommandError(cmd, cmdArgs, ext); } finally { _IsExecutingCommand = false; } } if (cmdArgs.RefreshLevel == UIStateRefreshLevel.Current) { // 刷新当前命令绑定的用户界面元素状态 this.UpdateBindingControlStatus(cmd.Name); } else if (cmdArgs.RefreshLevel == UIStateRefreshLevel.All) { // 刷新所有的被绑定命令的用户界面元素状态 this.UpdateBindingControlStatus(); } return(cmdArgs.Result); }//if return(null); }