As a NCommandParent control is used mainly to visualize command instances, you can use the functionality provided by its children NCommand objects. You could, however, use the notifications provided by the parent about an event that was fired by a child NCommand. Each NCommand will delegate its notification to the instance returned of its TopLevelParent property. A top-level parent is the parent that contains the TopLevelCommand instance. In most cases such a top-level parent is either a NToolbar instance or a NMenuWindow for context-sensitive menus.
The following table describes notifications fired by a NCommandParent control:
Notification | Description |
---|---|
CommandClick | Fired whenever a child command has been clicked. |
CommandPopup | Fired whenever a child command is about to display its drop-down menu. |
The following code demonstrates how to capture the CommandClick notification:
C# |
Copy Code
|
---|---|
//create a NToolbar control NToolbar toolbar = new NToolbar(); toolbar.CommandClick += new CommandEventHandler(OnCommandClick); //create two commands and add them to the toolbar NCommand command1, command2; command1 = new NCommand(); command1.Properties.ID = 1; command2 = new NCommand(); command2.Properties.ID = 2; //add commands to the toolbar toolbar.Commands.AddRange(new NCommand[]{command1, command2}); ... private void OnCommandClick(object sender, CommandEventArgs args) { //get the id of clicked command int id = args.Command.Properties.ID; switch(id) { case 1: MessageBox.Show("Command 1 was clicked!"); break; case 2: MessageBox.Show("Command 2 was clicked!"); break; } } |
Visual Basic |
Copy Code
|
---|---|
'create a NToolbar control Dim toolbar As NToolbar = New NToolbar() AddHandler toolbar.CommandClick, AddressOf OnCommandClick 'create two commands and add them to the toolbar Dim command1, command2 As NCommand command1 = New NCommand() command1.Properties.ID = 1 command2 = New NCommand() command2.Properties.ID = 2 'add commands to the toolbar toolbar.Commands.AddRange(New NCommand(){command1, command2}) ... Private Sub OnCommandClick(object sender, CommandEventArgs args) Handles toolbar.CommandClick 'get the id of clicked command Dim id As Integer = args.Command.Properties.ID Select Case id case 1 MessageBox.Show("Command 1 was clicked!") case 2 MessageBox.Show("Command 2 was clicked!") End Select End Sub |
The following code demonstrates the usage of CommandPopup notification:
C# |
Copy Code
|
---|---|
//create a NToolbar and add a drop-down command to it NToolbar toolbar = new NToolbar(); toolbar.CommandPopup += new CommandEventHandler(OnCommandPopup); //create a NCommand object which will always display a drop-down menu NCommand command = new NCommand(); command.Properties.DropDownBehaviour = DropDownBehaviour.AlwaysDropDown; command.Properties.ShowArrowStyle = ShowArrowStyle.Never; command.Properties.ID = 0; //add command to the toolbar toolbar.Commands.Add(command); ... private void OnCommandPopup(object sender, CommandEventArgs args) { //get command id int id = args.Command.Properties.ID; if(id != 0) return; //as this notification is called just before a NCommand is about to display its drop-down menu //you may use it to dynamically populate the affected command's children //or change existing children's state - Checked, Enabled, Visible, etc. args.Command.Commands.Clear(); //populate all floating panels NCommand comm; foreach(INDockingPanel panel in this.m_DockManager.GetPanels(DockState.Floating)) { comm = new NCommand(); comm.Properties.Text = panel.Text; comm.Checked = true; //add the newly created command to the affected one's children args.Command.Commands.Add(comm); } } |
Visual Basic |
Copy Code
|
---|---|
'create a NToolbar and add a drop-down command to it Dim toolBar As NToolbar = New NToolbar() AddHandler toolbar.CommandPopup, AddressOf OnCommandPopup 'create a NCommand object which will always display a drop-down menu Dim command As NCommand = New NCommand() command.Properties.DropDownBehaviour = DropDownBehaviour.AlwaysDropDown command.Properties.ShowArrowStyle = ShowArrowStyle.Never command.Properties.ID = 0 'add command to the toolbar toolbar.Commands.Add(command) ... Private Sub OnCommandPopup(ByVal sender As Object, ByVal args As CommandEventArgs) Handles toolbar.CommandPopup 'get command id Dim id As Integer = args.Command.Properties.ID If id <> 0 Then return End If 'as this notification is called just before a NCommand is about to display its drop-down menu 'you may use it to dynamically populate the affected command's children 'or change existing children's state - Checked, Enabled, Visible, etc. args.Command.Commands.Clear() 'Populate all floating panels Dim comm As NCommand for Each panel As INDockingPanel In Me.m_DockManager.GetPanels(DockState.Floating) comm = New NCommand() comm.Properties.Text = panel.Text comm.Checked = True 'add the newly created command to the affected one's children args.Command.Commands.Add(comm) Next End Sub |