我在editablemode中創建了wxGrid。我註冊了以下事件處理程序。wxGrid在用戶編輯單元格後顯示舊值而不是新值
class ReadWriteGrid : public wxGrid
{
public:
ReadWriteGrid(wxWindow *parent, wxWindowID ID,
const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize,
long style=262144, const wxString &name=wxGridNameStr)
: wxGrid(parent, ID, pos, size, style, name)
{
SetEditable();
}
};
EVT_GRID_CELL_CHANGE(IndexTableFrame :: OnEditField)
當用戶更改單元格的值我的函數被調用,但完成後現在。單元格值將更改回其舊值。
void IndexTableFrame::OnEditField(wxGridEvent& event)
{
int RowNumber;
int ColNumber;
wxString type;
wxGridCellEditor *m_Editor;
wxString NewValue;
RowNumber = event.GetRow();
ColNumber = event.GetCol();
m_Editor = m_grid->GetDefaultEditorForCell(RowNumber,ColNumber);
NewValue = m_Editor->GetValue();
m_Editor->Destroy();
m_grid->SetCellValue(NewValue,RowNumber,ColNumber);
event.skip();
}
這是我第一次使用WxWidget。我不確定如何避免細胞變回原有的價值。
,雅我試着什麼都不做。連接到這個網格的表格非常複雜。用戶在網格中編輯單元格值後,更改不會傳遞到下面的表格。放鬆焦點後,網格調用表格的getcellvalue(row,col),該表格返回從文件讀取的原始值。 – vgeta
然後我相信問題在於你'附着'在桌子底下。如果你做得很好,那麼wxWidgets框架應該爲你提供幫助。然而,這是相當先進的東西,我不是這樣做的專家。 – ravenspoint