Show and Hide Editors
- 5 minutes to read
Users can edit data in the focused cell. To activate the focused cell’s editor, users can press Enter, F2, or click the cell. The EditorShowMode option specifies how an editor is activated on a mouse click:
- Default — equivalent to Click if MultiSelectMode is set to CellSelect; otherwise, MouseDown.
- MouseDown — a cell editor is activated when the left mouse button is pressed.
- MouseUp — a cell editor is activated when the left mouse button is released. The cell content is selected in this mode. Disable the AutoSelectAllInEditor option to prevent content selection.
- Click — the first click focuses the cell, the subsequent click activates the editor.
- MouseDownFocused — a cell editor is activated when the left mouse button is pressed in a cell that is already focused.
- DoubleClick — a cell editor is activated on a double mouse click.
Note
If the Ctrl, Alt, or Shift key is pressed, the clicked cell is focused, but its editor is not activated.
Show and Hide the Focused Cell’s Editor in Code
Use the following methods to activate and deactivate the focused cell’s editor:
- TreeList.ShowEditor — activates the editor.
- TreeList.CloseEditor — saves the changes and deactivates the editor.
- TreeList.PostEditor — saves the changes, but does not deactivate the editor.
- TreeList.HideEditor — discards the changes and deactivates the editor.
Note
An editor cannot be activated in the following cases:
- The control’s Editable option is disabled.
- A column’s AllowEdit option is disabled.
- A ShowingEditor event handler prohibits the processed cell from being edited by the user.
Active Editor
After an editor is activated, you can use the control’s ActiveEditor property to access it. If there is no active editor in the control, this property returns null (Nothing in VB). To obtain or set the active editor’s value, use the EditingValue property.
The control raises the following events when a user activates an editor:
- ShowingEditor — fires before the editor is activated.
- ShownEditor — fires after the editor is activated.
- HiddenEditor — fires after the editor is deactivated.
Focused Cell
Use the following properties to determine the focused cell:
- FocusedNode — specifies the focused node.
- FocusedColumn — specifies the focused column.
You can also use the editor’s ContainsFocus property to check if the editor is focused. For an editor that can display a pop-up window (for example, a date editor), you can use the EditorContainsFocus property, which returns whether the editor or its pop-up window is focused.
Post the Edited Node to the Data Source
Edits in the focused node are posted to the bound data source only when the node loses focus. Prior to this, edits are stored in cell editors. You can call the following methods to forcibly post the edited node to the data source or discard the changes:
- EndCurrentEdit() — posts the focused node’s values to the data source. If the New Item Node is focused, the control creates a new node. This method raises the ValidateNode event.
- CancelCurrentEdit() — discards changes made to the focused node. If the New Item Node is focused, the control does not create a new node.
The code below posts the focused node’s values to the data source each time an editor is hidden.
private void treeList1_HiddenEditor(object sender, EventArgs e) {
TreeList treeList = sender as TreeList;
treeList.EndCurrentEdit();
}
Focus and Navigation
Use the OptionsNavigation property to access the following settings that allow you to specify how users can move focus:
- AutoFocusNewNode — specifies whether a new node is focused.
- AutoMoveRowFocus — specifies whether the Left/Right Arrow keys move focus to the previous/next node when the current node’s first/last cell is focused.
- EnterMovesNextColumn — specifies whether the Enter key moves focus between cells.
- MoveOnEdit — specifies whether the Left Arrow and Right Arrow keys move focus when an editor is active.
- UseBandsAdvHorzNavigation — specifies whether the Left Arrow and Right Arrow keys move focus with respect to how columns are arranged in bands.
- UseBandsAdvVertNavigation — specifies whether the Up Arrow and Down Arrow keys move focus with respect to how columns are arranged in bands.
- UseTabKey — specifies whether the Tab key and the Shift+Tab key combination move focus between cells rather than controls.
Example
The example below handles the following events to change the focused node’s images:
- TreeList.ShownEditor — sets the node’s state image to indicate that the node is being modified. This event fires when the editor is activated.
- TreeList.HiddenEditor — removes the node’s state image. This event fires when the editor is deactivated.
- TreeList.CellValueChanged — sets the node’s select image to indicate that the value has been modified.
using DevExpress.XtraTreeList;
private void treeList1_ShownEditor(object sender, System.EventArgs e) {
TreeList tlist = sender as TreeList;
tlist.FocusedNode.StateImageIndex = 0;
}
private void treeList1_HiddenEditor(object sender, System.EventArgs e) {
TreeList tlist = sender as TreeList;
tlist.FocusedNode.StateImageIndex = -1;
}
private void treeList1_CellValueChanged(object sender,
DevExpress.XtraTreeList.CellValueChangedEventArgs e) {
e.Node.SelectImageIndex = 1;
e.Node.ImageIndex = 1;
}