首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ToggleButton状态

ToggleButton状态
EN

Stack Overflow用户
提问于 2020-06-02 07:47:26
回答 1查看 232关注 0票数 0

我正在使用Excel。基于它的on/off状态,我在SheetSelectionChange事件中的Excel单元格中进行了一些处理。如果不访问我的设置文件,我就无法从单元格中获得toggleButton的状态,这是不必要的开销。让我展示一下代码的片段。

全局变量可以是一种选择。但能给我点更好的吗?

代码语言:javascript
运行
复制
Private Sub mExcel_SheetSelectionChange(ByVal theSheet As Object, ByVal Target As Range)
'++
' Call the C++ Code.
'--
'If (isbtnpressed) Then  ** <-- This is where i want to check the ToglgeButton status
' I don't want to read the settings file for every cell click. **
    Dim flagVal As Boolean
    'IsValidData goes to C++ for validation
    If IsValidData(Target.Application.ActiveCell) Then
        LoadMyListForm Target.Application.ActiveCell
    End If
'End If

End Sub

onAction事件(2)

代码语言:javascript
运行
复制
Public Sub IxlRibbonGetButtonStateByTag(theControl As IRibbonControl, ByRef isbtnpressed)
'++
'Get ShowOnClick button state, callback for getPressed
'
' Arguments:
'    theControl - The ribbon control that fired the OnAction request.
'    IsPressed - Button status
'--
On Error Resume Next
isbtnpressed = (ReadFromSettingsFile (theControl.Tag, "0") <> "0")

End Sub

代码语言:javascript
运行
复制
Public Sub IxlRibbonToggleSettingByTag(control As IRibbonControl, IsPressed As Boolean)
'++
'callback for onAction
'
' Arguments:
'    theControl - The ribbon control that fired the OnAction request.
'    IsPressed - Button status
'--
On Error Resume Next

If IsPressed Then
    WriteToSettingsFile control.Tag, "1"
Else
    WriteToSettingsFile control.Tag, "0"
End If

End Sub

UI XML看起来像

代码语言:javascript
运行
复制
            <toggleButton id="tb_IxlToggleButton"
                label="My Label"
                tag="MyLabel"
                getPressed="IxlRibbonGetButtonStateByTag"
                onAction="IxlRibbonToggleSettingByTag"
                imageMso="ControlToggleButton" />
                <button id="MyLabel"
                    tag="MyLabel"
                    onAction="IxlRibbonToggleSettingByTag"/>

i继续使用全局变量作为出路,正如@Pᴇʜ

的注释部分所建议的那样。

EN

回答 1

Stack Overflow用户

发布于 2020-06-02 09:59:46

如果Public变量不愿意,一种方便的方法是将其状态保存在注册表中。根据记忆状态,还可以在应用程序启动时设置Toggle按钮:

  1. 在模块级别创建一些常量:

Public const MyApp as MyApp= "MyApp Name“Public const MyAppSett as string = "MyApp Settings”Public const TglVal as string =MyApp

公共子IxlRibbonToggleSettingByTag(控制为IRibbonControl,IsPressed为布尔) SaveSetting MyApp,MyAppSett,TglVal,cStr(IsPressed) End Sub

  • 创建一个函数以快速返回状态(在注册表中读取):

函数TglStatus()作为布尔Dim strToggle作为字符串strToggle = GetSetting(MyApp,MyAppSett,TglVal,“Nothing.”)如果strToggle <>“没什么.”然后TglStatus = CBool(strToggle) TglStatus = False‘表示在记忆某物之前.如果End函数

  • 结束并按如下方式使用它:

如果是TglStatus,那么“为真做某事”--如果做错了的话--做其他事情

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62147212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档