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

VSTO VB开发Visio插件:下拉框OnAction事件无响应问题

VSTO Visio插件下拉框OnAction事件无响应的解决方法

问题情况

使用Visual Studio + VSTO VB开发MS Visio插件,已有的功能区按钮均可正常工作,但新增下拉框ListeCabalge后,配置的OnAction事件完全无响应。尝试过将事件代码放在CustomRibbon.vb和ThisAddIn.vb中,也修改过参数类型为Office.IRibbonControl,问题仍未解决。

现有XML代码

<group id="MLED_Group" label="Mur LED">
    <button id="MLEDBtn" label="Insérer un Mur LED" onAction="MLEDBtn_Click" size="large" imageMso="AbstractAssociation"/>
    <dropDown id="ListeCabalge" label="N° de circuit :" onAction="OnColorChange" enabled="true">
        <item id="Item1" label="Data 1"/>
        <item id="Item2" label="Data 2"/>
        <item id="Item3" label="Data 3"/>
        <item id="Item4" label="Data 4"/>
        <item id="Item5" label="Data 5"/>
        <item id="Item6" label="Data 6"/>
        <item id="Item7" label="Data 7"/>
        <item id="Item8" label="Data 8"/>
        <item id="Item9" label="Data 9"/>
        <item id="Item10" label="Data 10"/>
    </dropDown>
    <button id="CMLEDBtn" label="Commencer le câblage" onAction="CMLEDBtn_Click"/>
    <button id="stopCablingButton" label="Arrêter le câblage" onAction="OnStopCablingClick"/>
</group>

现有VB代码

Public Sub OnColorChange(ByVal control As IRibbonControl)
    MsgBox("Je viens dêtre appelé")
    'CablingColor = selectedId
End Sub

解决步骤

1. 修正下拉框OnAction的参数签名

VSTO中下拉框的OnAction事件必须包含三个参数(按钮的OnAction仅需单个IRibbonControl,但下拉框的事件签名有严格要求),这是核心问题:

Imports Microsoft.Office.Core

Public Sub OnColorChange(ByVal control As IRibbonControl, ByVal selectedItemId As String, ByVal selectedItemIndex As Integer)
    MsgBox($"选中项ID: {selectedItemId}, 索引: {selectedItemIndex}")
    ' 可根据选中项ID/索引处理逻辑,例如:
    ' Select Case selectedItemId
    '     Case "Item1" : CablingColor = "Data 1"
    '     Case "Item2" : CablingColor = "Data 2"
    '     ' ... 其他项逻辑
    ' End Select
End Sub

2. 确保事件处理程序的位置正确

如果功能区是通过XML自定义并实现了IRibbonExtensibility接口,事件处理程序必须放在实现该接口的类(即CustomRibbon.vb)中,且必须用Public修饰符,不建议放在ThisAddIn.vb中。

3. 清理缓存并重新生成项目

Visual Studio的缓存可能导致事件绑定失效,执行以下操作:

  • 关闭Visio和Visual Studio
  • 删除项目目录下的bin和obj文件夹
  • 重新打开项目并执行重新生成解决方案
  • 重新部署加载项

4. 验证事件名称拼写

确认XML中的onAction="OnColorChange"与VB中的方法名完全一致(VB大小写不敏感,但保持一致可避免潜在问题)。


内容的提问来源于stack exchange,提问作者michael centenico

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:13:17