VB.net - 使用字符串的目标对象(对象在选项卡下然后是面板然后是分割器)

时间:2015-06-29 05:22:36

标签: vb.net variables checkbox textchanged

在php和javascript中我可以做这样的事情

If ($a == 1){
  $set_num = 1
} Else {
  $set_num = 2
}

textbox_ . $set_num = "Some text here"
checkbox_ . $set_num = "Some text here"
radio_ . $set_num = "Some text here"

我怎么能在vb.net中这样做?

enter image description here

在我的设计页面中,我有许多面板,分割器,文本框,复选框和其他内容,请注意此设计位于面板选项卡(索引2)下。我想要的是创建一个短代码(尽可能短),这样当用户键入某个文本框时,我将知道要激活的时间表,因此每次用户单击应用按钮时,系统将只发送具有最后一个的设置text_change

这是我在vb.net中的代码,我想使用me.controls来调用字符串中的对象,但它不起作用

     Dim lab As Label

     For i As Integer = 1 To 10
        lab = Me.Controls("tb_hour_" & i)
        lab.Text = "Test" & i
     Next

顺便说一下,我的文本框,复选框和单选按钮的名称是这样的

tb_hour_1,tb_minute_1,cb_monday_1等_1表示计划1,因此对于计划2,它将类似于tb_hour_2,tb_minute_2,cb_monday_2等。

实际上我的代码正常工作,当我在面板和分割器中放置文本框,复选框等时,会出现问题。面板和分割器的目的只是设计(我的目标是边界)。

目前这是我用来实现目标的代码,但我的代码很难维护,因为我嵌套了一个条件。这就是为什么我想应用while循环并定位字符串中的所有对象

If Lbl_Temp_1.Text = "0" Then
        frmTerminal.Lbl_Settings_Cmd.Text = "CSR01^"
        frmTerminal.cmdSend_Click(sender, e)
    Else
        If Lbl_Temp_2.Text = "0" Then
            frmTerminal.Lbl_Settings_Cmd.Text = "CSR02^"
            frmTerminal.cmdSend_Click(sender, e)
        Else
            If Lbl_Temp_3.Text = "0" Then
                frmTerminal.Lbl_Settings_Cmd.Text = "CSR03^"
                frmTerminal.cmdSend_Click(sender, e)
            Else
                If Lbl_Temp_4.Text = "0" Then
                    frmTerminal.Lbl_Settings_Cmd.Text = "CSR04^"
                    frmTerminal.cmdSend_Click(sender, e)
                Else
                    If Lbl_Temp_5.Text = "0" Then
                        frmTerminal.Lbl_Settings_Cmd.Text = "CSR05^"
                        frmTerminal.cmdSend_Click(sender, e)
                    Else
                        If Lbl_Temp_6.Text = "0" Then
                            frmTerminal.Lbl_Settings_Cmd.Text = "CSR06^"
                            frmTerminal.cmdSend_Click(sender, e)
                        Else
                            If Lbl_Temp_7.Text = "0" Then
                                frmTerminal.Lbl_Settings_Cmd.Text = "CSR07^"
                                frmTerminal.cmdSend_Click(sender, e)
                            Else
                                If Lbl_Temp_8.Text = "0" Then
                                    frmTerminal.Lbl_Settings_Cmd.Text = "CSR08^"
                                    frmTerminal.cmdSend_Click(sender, e)
                                Else
                                    If Lbl_Temp_9.Text = "0" Then
                                        frmTerminal.Lbl_Settings_Cmd.Text = "CSR09^"
                                        frmTerminal.cmdSend_Click(sender, e)
                                    Else
                                        If Lbl_Temp_10.Text = "0" Then
                                            frmTerminal.Lbl_Settings_Cmd.Text = "CSR10^"
                                            frmTerminal.cmdSend_Click(sender, e)
                                        Else
                                            Tmr_Schedule_Get.Enabled = False
                                            frmTerminal.Tmr_Write_Check.Enabled = True
                                            Btn_Schedule.Enabled = False
                                            Me.Settings_Tab.TabPages(1).Enabled = True

                                            If Cb_Set_1.Checked = True Or Cb_Set_2.Checked = True Or Cb_Set_3.Checked = True Or Cb_Set_4.Checked = True Or Cb_Set_5.Checked = True Or Cb_Set_6.Checked = True Or Cb_Set_7.Checked = True Or Cb_Set_8.Checked = True Or Cb_Set_9.Checked = True Or Cb_Set_10.Checked = True Then
                                                Btn_Schedule.Enabled = True
                                            End If

                                        End If
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        End If
    End If

2 个答案:

答案 0 :(得分:1)

当您双击复选框等时,IDE会自动为您创建一个处理程序,您可以在其中放置您想要的代码。您需要在handle-sub中使用不同的参数才能使其工作。

 Private Sub CB_reloadText_CheckedChanged(sender As Object, e As EventArgs) Handles CB_reloadText.CheckedChanged
    Dim enabled As Boolean

    If CB_reloadText.Enabled = True Then
        enabled = True
    Else
        enabled = False
    End If

End Sub

答案 1 :(得分:0)

现在似乎无法定位面板下的对象,该面板也位于面板下。

我设法通过重新创建我的设计布局来解决这个问题,我尽可能地将面板的使用限制在一个对象下只有1个面板,通过这样做我可以使用这个代码轻松地定位对象

For Each Ctrl_Panel_Set As Control In Schedule_Tab
        If TypeOf Ctrl_Panel_Set Is Panel And Ctrl_Panel_Set.Name.StartsWith("Panel_Set_") Then
            For Each Ctrl_Lbl_Temp In Ctrl_Panel_Set.Controls
                If TypeOf Ctrl_Lbl_Temp Is Label Then
                    If Ctrl_Lbl_Temp.Name.StartsWith("Lbl_Temp_") Then
                        If Ctrl_Lbl_Temp.Text = "0" Then
                            Panel_Set_Num = CType(Ctrl_Panel_Set, Panel).Name
                            Set_Num = "CSR" & Panel_Set_Num.Substring(Panel_Set_Num.Length - 2) & "^"
                            Return Set_Num
                        End If
                    End If
                End If
            Next
        End If
    Next Ctrl_Panel_Set