如何解决通过转义字符在 DataGridView 中实现 Undo 方法
我创建了一个自定义 DataGridView EditingControl,就像在 this example 中一样。一切都运行良好,但我正在尝试通过 Escape 键实现“撤消”功能。
我以这种方式通过重载的构造函数在 _InitialValue 中保存初始值。我还包含了“撤消”代码:
public class DataGridCellEditor : TextBox,IDataGridViewEditingControl
{
private string _InitialValue;
#region Constructors
/// <summary>
/// Empty constructor.
/// </summary>
public DataGridCellEditor()
{
}
/// <summary>
/// Constructor via initial value.
/// </summary>
/// <param name="initialValue"></param>
public DataGridCellEditor(string initialValue) : this()
{
_InitialValue = initialValue;
EditingControlFormattedValue = initialValue;
}
#endregion
.
.
// Capture the Escape key and set the text box to the initial value.
protected override bool ProcessCmdKey(ref Message m,Keys keyData)
{
if ((keyData & Keys.Escape) == Keys.Escape)
{
this.Text = _InitialValue;
return (true);
}
return base.ProcessCmdKey(ref m,keyData);
}
}
如上所示,我通过覆盖自定义编辑器的 ProcessCmdKey 来捕获 Escape 键。但是,_InitialValue 在那里始终为空,即使它在首次创建控件时具有值。事实上,_InitialValue 似乎永远不会在构造函数之外保留它的值。我已经通过例如 GetEditingControlFormattedValue() 测试了它的值,并且该值为空。
我不想走找到数据绑定项的值来实现撤消的方式。有没有办法在控件中保存一个初始值?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。