我创建了一个 wxGrid,用数据填充它,并创建了一个包含复选框的列,并使它们可编辑。到目前为止一切都很好。
co_Grid->SetReadOnly(at_RowCount, 24, false);
co_Grid->SetCellRenderer(at_RowCount, 24, new wxGridCellBoolRenderer);
co_Grid->SetCellEditor(at_RowCount, 24, new wxGridCellBoolEditor);
我现在想要做的是为复选框切换事件添加一个事件处理程序。
我已经尝试将OnCellValueChanged
事件用于网格,但只有在用户离开单元格后才会触发,因为在此之前编辑器仍然打开(并且单元格实际上还没有改变)
我很确定我需要为它创建一个事件处理程序,wxGridCellBoolEditor
但这就是我苦苦挣扎的地方。
我尝试在事件中连接一个事件OnEditorShown
,但这并不顺利(当我单击单元格打开编辑器时出现未处理的异常):
void cTeamGrid::OnEditorShown( wxGridEvent& ev )
{
int row = ev.GetRow(),
col = ev.GetCol();
co_Grid->GetCellEditor(row, col)->GetControl()->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED,
wxCommandEventHandler(cTeamGrid::OnGridCheckChange), NULL, this);
}
我究竟做错了什么?