Cancel rating edit on escape

This commit is contained in:
Michael Bucari-Tovo 2023-01-01 11:23:22 -07:00
parent 7ef666dc91
commit 0ed5062683
4 changed files with 18 additions and 5 deletions

View File

@ -19,7 +19,7 @@ namespace LibationAvalonia.Controls
OwningColumnProperty = typeof(DataGridCell).GetProperty("OwningColumn", BindingFlags.Instance | BindingFlags.NonPublic); 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) if (cell is not null && cell.ContextMenu is null)
{ {

View File

@ -22,7 +22,7 @@ namespace LibationAvalonia.Controls
}; };
ToolTip.SetTip(myRatingElement, "Click to change ratings"); ToolTip.SetTip(myRatingElement, "Click to change ratings");
cell?.AttachContextMenuToCell(); cell?.AttachContextMenu();
if (Binding != null) if (Binding != null)
{ {

View File

@ -8,7 +8,7 @@ namespace LibationAvalonia.Controls
{ {
protected override IControl GenerateElement(DataGridCell cell, object dataItem) protected override IControl GenerateElement(DataGridCell cell, object dataItem)
{ {
cell?.AttachContextMenuToCell(); cell?.AttachContextMenu();
return base.GenerateElement(cell, dataItem); return base.GenerateElement(cell, dataItem);
} }
} }

View File

@ -102,12 +102,25 @@ namespace LibationWinForms.GridView
EditingControlDataGridView.NotifyCurrentCellDirty(true); 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 #region IDataGridViewEditingControl
public DataGridView EditingControlDataGridView { get; set; } public DataGridView EditingControlDataGridView { get; set; }
public int EditingControlRowIndex { get; set; } public int EditingControlRowIndex { get; set; }
public bool EditingControlValueChanged { 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 Cursor EditingPanelCursor => Cursor;
public bool RepositionEditingControlOnValueChange => false; public bool RepositionEditingControlOnValueChange => false;
@ -118,7 +131,7 @@ namespace LibationWinForms.GridView
BackColor = dataGridViewCellStyle.BackColor; 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 object GetEditingControlFormattedValue(DataGridViewDataErrorContexts context) => EditingControlFormattedValue;
public void PrepareEditingControlForEdit(bool selectAll) { } public void PrepareEditingControlForEdit(bool selectAll) { }