在另一个事件中跟踪一个事件

Posted

技术标签:

【中文标题】在另一个事件中跟踪一个事件【英文标题】:Tracking an event within another event 【发布时间】:2015-10-10 00:01:08 【问题描述】:

我想知道是否可以实现以下目标,如果可以,有什么好的开始方式:

我有一个 wxGrid,其中包含事件,其中包括 OnGridCmdEditorShown 和 wxMouseEvent OnLeftDown。当我开始编辑一个单元格时, OnGridCmdEditorShown 会被触发,直到我按下回车键或单击另一个单元格。但是,我想做的是当我仍在编辑单元格时(在 OnGridCmdEditorShown 事件中),我想从 OnLeftDown 获得点击。换句话说,OnLeftDown 不应终止 OnGridCmdEditorShown 事件。为了让您更清楚地了解,您可以考虑一下 MS Excel 在输入公式时所做的事情:我们正在编辑一个单元格,而我们仍然可以单击不同的单元格。

我可能错了,但总的来说,我想,我的问题是如何控制事件中的另一个事件,例如在 OnGridCmdEditorShown 中控制 OnLeftDown。我想也许在 OnGridCmdEditorShown 中启动一个线程或有一个事件循环可能是个好主意,但我对这两个都不是很熟悉。

任何带有简单示例代码的想法都将受到赞赏。

最好的问候

【问题讨论】:

【参考方案1】:

我看到的现有wxGrid 的唯一可能性是定义一个自定义编辑器控件,该控件在鼠标处于活动状态时捕获鼠标。我实际上并没有尝试这样做,但我认为它应该可以工作。

我想知道如果你这样做,你将如何允许用户取消使用鼠标进行编辑...

【讨论】:

其实我也尝试过类似的思路,比如通过Connect(wxEVT_GRID_CELL_LEFT_CLICK,wxGridEventHandler(mygrid::OnGridCellChange), NULL, this);将鼠标点击事件重定向到GridCellChange。由于我无法将 wxKeyEvent 重新路由到网格事件,因此处理键事件以及将鼠标单击重新路由到其原始状态正成为一个问题。相反,我将尝试子类化wxGridCellEditor,然后将已编辑单元格的编辑器设置为新的。不确定这是否可行,但似乎有希望。

以上是关于在另一个事件中跟踪一个事件的主要内容,如果未能解决你的问题,请参考以下文章

Google Analytics - 在单个 HTTP 请求中跟踪多个事件

关于在swing的两个JPanel钟一个事件监听器中修改了数组成员变量内容后,再在另一个事件监听器中获取数组成员变量的值发现仍然是初始化时的值没有获取到在另一个事件监听器对它的修改

BigQuery UDF 在另一个表中查找最大值

无法在另一个线程中发送对象的发布事件 - Qt

如何在 c#/.net 中让一个进程在另一个进程中触发一个事件?

JQuery - 图像的悬停事件在另一个图像后面