gpt4 book ai didi

c++ - 显示 wxGrid 编辑器时如何捕获 KeyEvents

转载 作者:行者123 更新时间:2023-11-28 05:24:31 26 4
gpt4 key购买 nike

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

我的方法:

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 仅在我按下 enter 时出现。如何在编辑器仍显示时捕获 KeyEvents,例如,用户向当前单元格键入 a 并显示 MessageBox。

最佳答案

您需要使用自定义编辑器(可能只是从标准 wxGridCellTextEditor 派生而来)并绑定(bind)到在其 Create 中创建的编辑控件的 wxEVT_CHAR 事件()

请注意,如果你想处理初始按键,这会导致首先显示编辑器,你需要重写 wxGridCellEditor::StartingKey(),因为这个按键发生了在显示编辑控件之前。

关于c++ - 显示 wxGrid 编辑器时如何捕获 KeyEvents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com