在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中这样做?
在我的设计页面中,我有许多面板,分割器,文本框,复选框和其他内容,请注意此设计位于面板选项卡(索引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
答案 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