本规范过于重复!我必须重新编写这个代码到二十个!你能帮助我把它转换成一个循环,它会从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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。