我想创建 wxGrid,用户可以在其中编辑一些单元格,但禁止输入不正确的值。例如,只能在此处输入长度为 4 的字符串。因此,如果用户输入另一个长度的字符串,我想显示一条错误消息并返回到单元格编辑器。怎么做?
例如,如果我处理单元格更改事件 EVT_GRID_CELL_CHANGE
void Frame::OnGridCellChange(wxGridEvent& event)
{
int r = event.GetRow(); // get changed cell
int c = event.GetCol(); // get changed cell
if (Grid->GetCellValue(r, c).length() != 4)
{Error E (this);
/* Create the Error message */
E.ShowModal();
// The error message shown, uses clicks OK
// So, what to do here?
}
Grid->ShowCellEditControl();
不是解决方案,因为如果用户不编辑任何内容,则不会生成单元格更改,而只需单击另一个单元格 - 网格中会出现不正确的值。
处理EVT_GRID_EDITOR_HIDDEN
似乎不合适,因为它出现在新值实际保存到单元格之前。