簡體   English   中英

當我在 vb.net 中將它作為參數傳遞時,如何觸發 checkbox.checked 事件?

[英]How can I get the checkbox.checked event to fire when I pass it as a parameter in vb.net?

我已經編程了很長時間,但我對 vb.net 比較陌生。我避免了傳遞參數的子程序和函數,因為我總是被卡住。 我正在嘗試編寫一個子例程來傳遞信息,這些信息將使用表中的值或清除字段或設置為 false 來填充文本框或復選框。 下面的第一個代碼是我一直在做的事情的一個例子,它是有效的。 我試圖編寫一個子例程來傳遞 1.表單上文本框或復選框控件的名稱,2.數據行值,以及 3.表中的列名。 問題是當我通過一個復選框時,我無法讓選中的事件顯示在我通過的控件(CoreCol)上。 它知道它是一個復選框,它會將復選框的文本設置為太真或太假,但它不會更改選中的框。

這是舊方法的一個例子。 對於文本框和復選框

' A Machine
If Not IsDBNull(r("A Machine")) Or Not IsNothing(r("A Machine")) Then
    TbXMachA.Text = r("A Machine")
Else
    TbXMachA.Text = ""
End If
If Not IsDBNull(r("A CO2 Box?")) Or Not IsNothing(r("A CO2 Box?")) Then
    CkbxCO2BoxA.Checked = r("A CO2 Box?")
Else
    CkbxCO2BoxA.Checked = False
End If

這行得通

LoadData2TextBox(Me. TbXMachA, r, "A Machine ")

這不

LoadData2TextBox(Me.CkbxCO2BoxA, r, "A CO2 Box?")

這是我正在寫的子例程

Private Sub LoadData2TextBox(ByRef CoreCol As Control, CoreRow As DataRow, BoxStage As String)                
    If Not IsDBNull(CoreRow(BoxStage)) Then
        If TypeOf CoreCol Is TextBox Then
            CoreCol.Text = CoreRow(BoxStage)
        End If 
        If TypeOf CoreCol Is CheckBox Then
            CoreCol.??? = CoreRow(BoxStage)
        End If
    Else
        CoreCol.Text = ""
    End If

您知道 CoreCol 是一個 CheckBox,因此您可以其轉換為一個,然后將其用作 CheckBox。

If TypeOf CoreCol Is CheckBox Then
    Dim myCheckBox = DirectCast(CoreCol, CheckBox)
    myCheckBox.Checked = DirectCast(CoreRow(BoxStage), Boolean)
End If

從 CoreRow(BoxStage) 中獲取 boolean 值的另一個轉換。 上面的代碼假設這會起作用,但我不確定 CoreRow(BoxStage) 中有什么。 您可能需要根據值添加一些邏輯,具體取決於它是什么。 例如:

myCheckBox.Checked = CoreRow(BoxStage) = "somevalue"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM