如何在Maxscript中触发标准按钮控件下已获得焦点的按钮点击事件
解决方案
原生MaxScript标准按钮的pressed事件默认仅响应鼠标点击操作,控件聚焦状态下按回车、空格不会自动触发事件回调,不过可以通过监听卷帘窗口的全局键盘事件实现需求,无需依赖.NET控件。
实现思路为:在卷帘窗口的KeyDown事件中检测回车、空格按键,获取当前聚焦的控件,如果是按钮类型则手动调用其pressed事件处理逻辑,代码示例如下:
try destroyDialog testRol catch() rollout testRol "testRol" ( button btn_yes "Y̲es" width:120 across:2 button btn_no "N̲o" width:120 on btn_yes pressed do destroyDialog testRol on btn_no pressed do print "Oh no.." on testRol open do setFocus btn_yes -- 监听键盘事件触发聚焦按钮的点击逻辑 on testRol KeyDown key do ( if key == #enter or key == #space do ( local focusedCtrl = windows.getFocusedControl() if focusedCtrl != undefined and classOf focusedCtrl == ButtonControl do ( focusedCtrl.pressed() ) ) ) ) createDialog testRol 525 45
该方案完全基于MaxScript原生接口实现,和原有按钮的点击行为完全一致,新增逻辑可以复用在任意包含标准按钮的卷帘窗口中。
内容的提问来源于stack exchange,提问作者Ste
相关产品推荐
相关产品推荐

