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);
}
public static void AttachContextMenuToCell(this DataGridCell cell)
public static void AttachContextMenu(this DataGridCell cell)
{
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");
cell?.AttachContextMenuToCell();
cell?.AttachContextMenu();
if (Binding != null)
{

View File

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

View File

@ -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) { }