PowerBuilder 10.5父窗口按键事件无响应问题求助
解决PowerBuilder 10.5中F9触发打印按钮无响应的问题
核心原因
窗口的键盘事件(pbm_keydown/pbm_dwnkey)没触发,是因为焦点默认落在DataWindow控件上,按键消息会先被DataWindow捕获,而非直接传递给父窗口。
具体解决步骤
方法1:在DataWindow的pbm_dwnkey事件中处理
- 选中窗口上默认获焦的第一个DataWindow控件
- 为该控件添加
pbm_dwnkey事件 - 写入以下代码:
IF key = KeyF9! THEN parent.cb_2.TriggerEvent(Clicked!) RETURN 1 // 阻止事件继续传递,避免冲突 END IF
方法2:设置窗口的KeyPreview属性实现全局捕获
- 打开窗口w_waybill的属性面板
- 将
KeyPreview属性设置为True - 在窗口的
pbm_dwnkey事件中保留判断代码:
IF key = KeyF9! THEN cb_2.TriggerEvent(Clicked!) RETURN 1 END IF
该属性会让窗口优先捕获所有按键消息,不受当前焦点控件影响。
注意事项
- 两种方法选其一即可,无需重复配置
- 若窗口存在多个DataWindow,方法1需给每个DW添加相同事件处理;方法2更适合全局统一快捷键逻辑
- 检查是否有其他控件的按键事件拦截了F9,避免冲突
内容的提问来源于stack exchange,提问作者Pablo Mazzara
相关产品推荐
相关产品推荐

