• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何在显示wxGrid编辑器时捕获KeyEvents

c/c++ 来源:macroland 3次浏览

在wxGrid中键入单元格时,箭头键可以在字符之间前后移动。但是,根据插入位置,我想在按下箭头键时将光标移动到下一个单元格。目前,wxGrid被配置为捕获Enter键,这使得光标向下移动(到下面的单元格)。 我的问题是如何在编辑器仍然显示时捕获KeyEvent。如何在显示wxGrid编辑器时捕获KeyEvents

我的方法:

void Grid::OnGridCmdEditorShown(wxGridEvent& event) 
{ 
    m_IsEditorShown=true; 
    //Connect(wxEVT_KEY_DOWN,wxKeyEventHandler(Grid::OnKeyDown),NULL, this); //This approach did not help either 
    event.Skip(); 
} 

void Grid::OnKeyDown(wxKeyEvent& event) 
{ 
    if(m_IsEditorShown) wxMessageBox("You are keying"); 

    event.Skip(); 
} 

当编辑器显示说我键入abc对当前单元格,当我按下进入MessageBox中才会出现。如何在编辑器仍然显示时捕获KeyEvents,例如,用户键入a到当前单元格并显示MessageBox。

===========解决方案如下:

一个办法是处理程序连接到每个网格编辑它已被创建之后,加入这Grid构造:

Bind(wxEVT_GRID_EDITOR_CREATED, [=](wxGridEditorCreatedEvent& event) { 
     event.GetControl()->Bind(wxEVT_KEY_DOWN, &Grid::OnKeyDown, this); 
    }); 

这将处理最初的按键,其结果首先展示了编辑,但是从我所了解的情况来看,在这里并不需要。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)