diff --git a/Source/LibationAvalonia/Controls/DataGridContextMenus.cs b/Source/LibationAvalonia/Controls/DataGridContextMenus.cs index 0afcd02c..4ec6d825 100644 --- a/Source/LibationAvalonia/Controls/DataGridContextMenus.cs +++ b/Source/LibationAvalonia/Controls/DataGridContextMenus.cs @@ -19,7 +19,7 @@ namespace LibationAvalonia.Controls OwningColumnProperty = typeof(DataGridCell).GetProperty("OwningColumn", BindingFlags.Instance | BindingFlags.NonPublic); } - public static void AttachContextMenuToCell(this DataGridCell cell) + public static void AttachContextMenu(this DataGridCell cell) { if (cell is not null && cell.ContextMenu is null) { diff --git a/Source/LibationAvalonia/Controls/DataGridMyRatingColumn.cs b/Source/LibationAvalonia/Controls/DataGridMyRatingColumn.cs index d3731e4a..36df2d0c 100644 --- a/Source/LibationAvalonia/Controls/DataGridMyRatingColumn.cs +++ b/Source/LibationAvalonia/Controls/DataGridMyRatingColumn.cs @@ -22,7 +22,7 @@ namespace LibationAvalonia.Controls }; ToolTip.SetTip(myRatingElement, "Click to change ratings"); - cell?.AttachContextMenuToCell(); + cell?.AttachContextMenu(); if (Binding != null) { diff --git a/Source/LibationAvalonia/Controls/DataGridTemplateColumnExt.cs b/Source/LibationAvalonia/Controls/DataGridTemplateColumnExt.cs index 58f94ff3..bf5d84e3 100644 --- a/Source/LibationAvalonia/Controls/DataGridTemplateColumnExt.cs +++ b/Source/LibationAvalonia/Controls/DataGridTemplateColumnExt.cs @@ -8,7 +8,7 @@ namespace LibationAvalonia.Controls { protected override IControl GenerateElement(DataGridCell cell, object dataItem) { - cell?.AttachContextMenuToCell(); + cell?.AttachContextMenu(); return base.GenerateElement(cell, dataItem); } } diff --git a/Source/LibationWinForms/GridView/MyRatingCellEditor.cs b/Source/LibationWinForms/GridView/MyRatingCellEditor.cs index 1a322cc4..c9f3ecfe 100644 --- a/Source/LibationWinForms/GridView/MyRatingCellEditor.cs +++ b/Source/LibationWinForms/GridView/MyRatingCellEditor.cs @@ -102,12 +102,25 @@ namespace LibationWinForms.GridView EditingControlDataGridView.NotifyCurrentCellDirty(true); } + protected override void OnKeyDown(KeyEventArgs e) + { + if (e.KeyCode == Keys.Escape) + { + EditingControlDataGridView.RefreshEdit(); + EditingControlDataGridView.CancelEdit(); + EditingControlDataGridView.CurrentCell.DetachEditingControl(); + EditingControlDataGridView.CurrentCell = null; + + } + base.OnKeyDown(e); + } + #region IDataGridViewEditingControl public DataGridView EditingControlDataGridView { get; set; } public int EditingControlRowIndex { get; set; } public bool EditingControlValueChanged { get; set; } - public object EditingControlFormattedValue { get => Rating; set => Rating = (Rating)value; } + public object EditingControlFormattedValue { get => Rating; set { } } public Cursor EditingPanelCursor => Cursor; public bool RepositionEditingControlOnValueChange => false; @@ -118,7 +131,7 @@ namespace LibationWinForms.GridView BackColor = dataGridViewCellStyle.BackColor; } - public bool EditingControlWantsInputKey(Keys keyData, bool dataGridViewWantsInputKey) => false; + public bool EditingControlWantsInputKey(Keys keyData, bool dataGridViewWantsInputKey) => keyData == Keys.Escape; public object GetEditingControlFormattedValue(DataGridViewDataErrorContexts context) => EditingControlFormattedValue; public void PrepareEditingControlForEdit(bool selectAll) { }