【发布时间】:2013-11-18 12:34:33
【问题描述】:
我创建了一个 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);
}
我做错了什么?
【问题讨论】:
标签: c++ checkbox event-handling wxgrid