微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb.net – 将此重复语句转换为循环

本规范过于重复!我必须重新编写这个代码到二十个!你能帮助我把它转换成一个循环,它会从textBox1移动到2到3等等吗?

If CheckBox1.Checked = True Then
        frmlunchBoxMenu.LineNumber = frmlunchBoxMenu.LineNumber + 1
        frmlunchBoxMenu.txtOrder.AppendText(frmlunchBoxMenu.LineNumber.ToString + ".) An order of " + CheckBox1.Text & Environment.NewLine)
    End If
    If CheckBox2.Checked = True Then
        frmlunchBoxMenu.LineNumber = frmlunchBoxMenu.LineNumber + 1
        frmlunchBoxMenu.txtOrder.AppendText(frmlunchBoxMenu.LineNumber.ToString + ".) An order of " + CheckBox2.Text & Environment.NewLine)
    End If        If CheckBox1.Checked = True Then
        frmlunchBoxMenu.LineNumber = frmlunchBoxMenu.LineNumber + 1
        frmlunchBoxMenu.txtOrder.AppendText(frmlunchBoxMenu.LineNumber.ToString + ".) An order of " + CheckBox1.Text & Environment.NewLine)
    End If
    If CheckBox2.Checked = True Then
        frmlunchBoxMenu.LineNumber = frmlunchBoxMenu.LineNumber + 1
        frmlunchBoxMenu.txtOrder.AppendText(frmlunchBoxMenu.LineNumber.ToString + ".) An order of " + CheckBox2.Text & Environment.NewLine)
    End If
    If CheckBox3.Checked = True Then
        frmlunchBoxMenu.LineNumber = frmlunchBoxMenu.LineNumber + 1
        frmlunchBoxMenu.txtOrder.AppendText(frmlunchBoxMenu.LineNumber.ToString + ".) An order of " + CheckBox3.Text & Environment.NewLine)
    End If
    If CheckBox4.Checked = True Then
        frmlunchBoxMenu.LineNumber = frmlunchBoxMenu.LineNumber + 1
        frmlunchBoxMenu.txtOrder.AppendText(frmlunchBoxMenu.LineNumber.ToString + ".) An order of " + CheckBox4.Text & Environment.NewLine)
    End If
    If CheckBox5.Checked = True Then
        frmlunchBoxMenu.LineNumber = frmlunchBoxMenu.LineNumber + 1
        frmlunchBoxMenu.txtOrder.AppendText(frmlunchBoxMenu.LineNumber.ToString + ".) An order of " + CheckBox5.Text & Environment.NewLine)
    End If

这是有效的,感谢帮助人员,问题是直接演员.解决了:

Public Class frmBeverages
Dim Range As Integer = 0
Private Sub btnSubmit_Click(sender As Object,e As EventArgs) Handles btnSubmit.Click
    While Range < 14
        Range = Range + 1
        Dim chk As CheckBox =
        DirectCast(Me.Controls("CheckBox" & CStr(Range)),CheckBox)
        If chk.CheckState = CheckState.Checked Then
            frmlunchBoxMenu.LineNumber = frmlunchBoxMenu.LineNumber + 1
            frmlunchBoxMenu.txtOrder.AppendText(CStr(frmlunchBoxMenu.LineNumber) & ".) An order of " & chk.Text & Environment.NewLine)
        End If
    End While
    Close()
End Sub
End Class

解决方法

Dim strOutput As String = ""
Dim intLineNumber As Integer = 0
For Each ctl As Control In Me.Controls
  If TypeOf ctl Is CheckBox Then
    Dim chk As CheckBox = DirectCast(ctl,CheckBox)
    If chk.Checked Then
      intLineNumber += 1
      strOutput &= intLineNumber.ToString + ".) An order of " + ctl.Text & vbCrLf
    End If
  End If
Next ctl
txtOrder.Text = strOutput

…但您也应该考虑使用CheckedListBox控件.这将允许您的菜单动态加载(从文本文件数据库加载),您不需要管理多个复选框控件.

这是CheckedListBox版本……

Public Class frmlunchBoxMenu
  'Add a CheckedListBox,a Button,and a TextBox named txtOrder to the form
  Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
    CheckedListBox1.Items.Clear()
    CheckedListBox1.Items.Add("Hamburger")
    CheckedListBox1.Items.Add("Pizza")
    CheckedListBox1.Items.Add("Cola")
    CheckedListBox1.Items.Add("Chips")
    CheckedListBox1.Items.Add("Hot dog")
  End Sub


  Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
    Dim strOutput As String = ""
    Dim intLineNumber As Integer = 0
    For i As Integer = 0 To CheckedListBox1.Items.Count - 1
      If CheckedListBox1.GetItemChecked(i) Then
        intLineNumber += 1
        strOutput &= intLineNumber.ToString + ".) An order of " + CheckedListBox1.Items(i).ToString & vbCrLf
      End If
    Next i
    txtOrder.Text = strOutput
  End Sub

End Class

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐