wxWidgets 无法接收鼠标右键单击

wxWidgets can't receive Right mouse click

我试图在 Windows 10 上的 wxWidgets 2.9.4 中向网格控件添加上下文菜单,虽然我可以让上下文菜单键工作,但右键单击却不行。现在我在 header

中有以下内容
void handle_contextMenu(wxContextMenuEvent& event);
void handle_rightButton(wxMouseEvent& event);

并在构造函数中

Bind(wxEVT_CONTEXT_MENU, &DataGrid::handle_contextMenu, this);
Bind(wxEVT_RIGHT_UP, &DataGrid::handle_rightButton, this);

鼠标右键都不起作用。

您无法在 wxGrid 上绑定到这些事件的原因是它是一个复合 window,如 the documentation 的 "Accessors for component windows" 部分所述。因此,要使此代码正常工作,您需要调用 GetGridWindow()->Bind(...),例如。

或者,如果足够的话,您可以并且可能应该使用更高级别的事件,例如已经提到的 wxEVT_GRID_CELL_RIGHT_CLICK