我想創建wxGrid,其中用戶可以編輯某些單元格,但禁止輸入不正確的值。例如,只能輸入長度爲4的字符串。所以,如果用戶輸入另一個長度的字符串,我想顯示一條錯誤消息並返回到單元格編輯器。怎麼做?如何防止用戶在wxGrid單元格中輸入無效值?
如果我處理一個小區改變事件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
似乎不適合,因爲它在新值實際保存到單元格之前出現。
好吧,想想你,它看起來像一個解決方案 – Nick