You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:27:03