我正在尝试让用户按下Ctrl + PgDown时我的DGV不滚动。我想滚动一些其他控件。问题是,某些单元格是否处于编辑模式,会有一些不同的行为。
第一个案例。当没有编辑模式时,我们有以下事件链:
所以我处理了DGV KeyDown。听到我可以检测是否按下Ctrl + PgDown并停止DGV滚动。
第二个案例。当有编辑模式并按Ctrl + PgDown时,我们有以下事件链(请注意,在编辑模式下,DGV动态创建TextBox控件):
我也跟踪txtbox_KeyUp和txtbox_KeyPress,但他们从不开火。
因此,在这种情况下,我只能在PreviewKeyDown中处理Ctrl + PgDown,但无法阻止它触发滚动事件。
第3个案例。如果用户首先按下它,则不会在PageDown键上触发txtbox_KeyDown(在编辑的单元格中未进行任何更改)。在单元格中进行一些更改后按下PageDown(或Ctrl + PgDown)时,我会跟踪以下内容:
所以在这种情况下我可以在txtbox_KeyDown中处理Ctrl + PgDown并且可以停止滚动。
我的问题是如何在第二种情况下处理事情?是否有某种方式(某些事件)在一个事件处理程序的所有情况下处理Ctrl + PgDown?在我的例子中,我使用三个:dGV_KeyDown,dGV_EditingControlShowing(以配置捕获txtbox_KeyDown)和txtbox_KeyDown同时。