我在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