Hi there,
I created a small test where I'm using an UltraTree with cells. I would like to cancel the edit mode if the text is equal to "foo". In this case I set e.Cancel to true but it doesn't seems to work.
Here is my test code:
public partial class Form1 : Form { UltraTreeNodeColumn _colName = null; UltraTreeNodeColumn _colValue = null; UltraTreeNode _node1 = null; public Form1() { InitializeComponent(); InitTree(); InitValues(); } private void InitTree() { UltraTreeColumnSet rootColumnSet = this.ultraTree1.ColumnSettings.RootColumnSet; this.ultraTree1.Override.CellClickAction = CellClickAction.EditCell; // Use the 'OutlookExpress' ViewStyle; reduce indentation a little this.ultraTree1.ViewStyle = ViewStyle.OutlookExpress; this.ultraTree1.Indent = 10; // Only allow one node to be selected at a time this.ultraTree1.Override.SelectionType = SelectType.Single; _colName = rootColumnSet.Columns.Add("Name"); _colName.DataType = typeof(string); _colName.LayoutInfo.PreferredCellSize = new Size(this.ultraTree1.Width / 2, 0); _colValue = rootColumnSet.Columns.Add("Value"); _colValue.DataType = typeof(object); _colValue.LayoutInfo.PreferredCellSize = new Size(this.ultraTree1.Width / 2, 0); _colValue.AllowCellEdit = AllowCellEdit.Full; // Auto-fit columns this.ultraTree1.ColumnSettings.AutoFitColumns = AutoFitColumns.ResizeAllColumns; } private void InitValues() { _node1 = ultraTree1.Nodes.Add("key1"); _node1.SetCellValue(_colName, "Text1"); _node1.SetCellValue(_colValue, "Value1"); UltraTreeNodeCell cell1 = _node1.Cells[_colValue]; cell1.Editor = new EditorWithText(); cell1.Editor.Tag = _node1; cell1.Editor.BeforeExitEditMode += new BeforeExitEditModeEventHandler(Editor_BeforeExitEditMode); } void Editor_BeforeExitEditMode(object sender, BeforeExitEditModeEventArgs e) { EditorWithText editor = sender as EditorWithText; if (editor != null) { if (editor.CurrentEditText.Equals("foo")) { MessageBox.Show("Invalid"); e.Cancel = true; } } } }
Thanks for your help...
I suspect is might be the MessageBox that is causing a problem. If you show a MessageBox, it will take focus. Thus the tree will lose focus and be forced out of edit mode.
Thanks for your answer but this is not the MessageBox. Actually I added a MessageBox just for the example.