首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VB.Net中分配Checkbox.checked值调用选中的事件

在VB.Net中分配Checkbox.checked值调用选中的事件
EN

Stack Overflow用户
提问于 2016-08-10 19:45:06
回答 2查看 3.7K关注 0票数 0

我有一个带有一些文本框的表单,并选中从textbox.Depends上的值进行计算复选框中的状态,输出值已更改。同时,我将所有这些数据保存到excel表格中,包括在excel表格中的复选框状态。稍后,我会将这些数据导入到表单中进行进一步计算。因此,当我将值从excel导入表单时,当我将复选框的状态更改为选中时。然后调用Tempmetric_CheckedChanged()函数,它会产生一些错误,因为在这一点上,我没有要计算的所有输入值。我该如何避免这种情况呢?我只有一个想法,在导入函数中设置标志,我将在Tempmetric_CheckedChanged()中检查这个标志,以避免进一步的工作。

代码语言:javascript
运行
复制
Private Sub Tempmetric_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tempmetric.CheckedChanged

        If Tempmetric.Checked Then
            STempUnit.Text = "F"
            FTempunit.Text = "F"
        Else
            STempUnit.Text = "C"
            FTempunit.Text = "C"
        End If
        Button1_Click(sender, New System.EventArgs()) // i have to use flag before this function call
    End Sub


    Private Sub SaveBTn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveBTn.Click  

            Dim metric As Integer    
            If Tempmetric.Checked Then
                metric = 1
            Else
                metric = 0
            End If    
            xlWorkSheet.Cells(7, 1) = "Metric"
            xlWorkSheet.Cells(7, 1).Font.Bold = True
            xlWorkSheet.Cells(7, 2) = metric
End Sub

Private Sub ImpInputBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImpInputBtn.Click
        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet       

        For rCnt = 1 To range.Rows.Count

        SamTemp.Text = xlWorkSheet.Cells(4, 2).Value.ToString
        FormTemp.Text = xlWorkSheet.Cells(5, 2).Value.ToString
            If xlWorkSheet.Cells(7, 2).Value = 1 Then
                Tempmetric.Checked = True
            End If
        Next
    End Sub

有没有其他可能的方法来做到这一点?“Checked”和“CheckState”属性有什么区别?

EN

回答 2

Stack Overflow用户

发布于 2016-08-10 22:50:29

两种可能的解决方案:

1)将“临时指标”事件由CheckedChanged改为Click。

2)添加一个全局布尔变量"Importing“,在您从Excel导入的函数中将其设置为"true”,并在CheckedChanged事件中检查此变量。

票数 0
EN

Stack Overflow用户

发布于 2021-06-05 05:39:19

您可以尝试从复选框中删除OnCheckedChanged处理程序,从Excel表格中导入数据,并在复选框上设置checked属性,最后重新分配OnChecked处理程序:

代码语言:javascript
运行
复制
Public Class MyForm
    Private Sub ImportButton_Click(...)
        RemoveHandler MyCheckbox.CheckChanged, AddressOf Me.MyCheckbox_CheckedChanged
        ImportDataAndSetCheckboxs()
        AddHandler MyCheckbox.CheckChanged, AddressOf Me.MyCheckbox_CheckedChanged
    End Sub

    Private Sub ImportDataAndSetCheckboxs()
        ' ... Do work to import and update checkboxes
    End Sub

    Private Sub MyCheckbox_CheckedChanged(...) Handles MyCheckbox.CheckedChanged
        ' ... Whatever work needs to get done here
    End Sub
End Class

移除事件处理程序应该会使您可以更新复选框,而不必处理导致错误的事件。

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

https://stackoverflow.com/questions/38872548

复制
相关文章

相似问题

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