大家好我正在尝试学习VB,并且遇到了一些我正在使用的代码。我希望我的程序输出一个特定的数字,如果使用case语句检查复选框,但我的代码不起作用。
Public Class frmBTPW
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btncalc.Click
Dim dblhdr As Double
Dim dblfdr As Double
Dim dbltdr As Double
dblhdr = 24
dblfdr = 35
dbltdr = 50
Select Case "Power Wash Rental"
Case "Half Day Rental"
If chkhd.Checked = True Then
txtrc.Text = "poop"
End If
Case "Full Day Rental"
If chkFD.Checked = True Then
txtrc.Text = dblfdr
End If
End Select
End Sub
Private Function Button1_Click() As CheckBox
Throw New NotImplementedException
End Function
End Class
非常感谢帮助。我的代码没有在文本框中输出任何内容。
答案 0 :(得分:1)
除了案例陈述之外,我认为你应该阅读文字值和变量之间的区别。 “Power Wash Rental”只不过是一系列字符,AKA是一个字符串:(在这种情况下“P”后跟“o”等)同样,“Half Day Rental”是一系列字符,“H”跟随通过“a”等。)
“Power Wash Rental”是一个文字字符串。 “半日租赁”也是如此,当然它们永远不会匹配。
鉴于:
Dim A as string
A = TextBox1.text
现在,A是一个变量。它是一个字符串,包含在文本框中输入的任何字符系列(文本)。
答案 1 :(得分:1)
这是一种简单的方法。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
chkhd.tag = 24 ' store values in the check boxes
chkfd.tag = 35 ' using the tag property
chktd.tag = 50 ' and later add up the values
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btncalc.Click
dim total as double = 0
total += IF(chkhd.checked, cdbl(chkhd.tag), 0)
total += IF(chkfd.checked, cdbl(chkfd.tag), 0)
total += IF(chktd.checked, cdbl(chktd.tag), 0)
msgbox(total)
End Sub
但是,我认为您可能需要单选按钮而不是复选框。 可以检查复选框。单选按钮一次只能有一个。
此解决方案允许您使用复选框保留价格 - 您可以在表单设计器中执行此操作,而不是使用表单加载。
答案 2 :(得分:0)
我建议您阅读Case Statements。目前,使用字符串,无时,您将永远不会到达任何地方。你也不需要这个案例...另外如果第一个条件是真的而最后一个条件也是如此,最后一个条件用于设置文本,不知道你是否有这个有没有理由?
If chkhd.Checked = True Then
txtrc.Text = "poop"
End If
If chkFD.Checked = True Then
txtrc.Text = dblfdr
End If
答案 3 :(得分:0)
正如其他人所说的那样,您的Case语句不起作用,因为您使用字符串文字将"Power Wash Rental"
与"Half Day Rental"
进行比较,这将始终为false。 Plutonix was also correct说应该使用租约期限ComboBox
。不存在的唯一原因是,如果您计算累计租赁天数/金额;但是在这种情况下,你应该使用某种NumericUpDown
作为你的乘数与持续时间。
这是一个可以帮助您入门的示例。您可以将结构化为一种键控集合,或者使其成为字典对象的包装类,这样可以更容易地在代码中使用。以下内容可能与您的项目无法完全即插即用,但它应该有助于您了解如何处理这种情况。
Option Strict On
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.ComboBox1.Items.AddRange({PowerWashRentals.halfDayText, PowerWashRentals.FullDayText, PowerWashRentals.TwoDayText})
AddHandler ComboBox1.SelectedValueChanged, AddressOf Me.ComboBox1_SelectedChanged
End Sub
Private Sub ComboBox1_SelectedChanged(sender As Object, e As EventArgs)
Dim cBox As ComboBox = DirectCast(sender, ComboBox)
Select Case cBox.SelectedItem.ToString
Case PowerWashRentals.halfDayText
Label1.Text = PowerWashRentals.HalfDayPrice.ToString
Case PowerWashRentals.FullDayText
Label1.Text = PowerWashRentals.FullDayPrice.ToString
Case PowerWashRentals.TwoDayText
Label1.Text = PowerWashRentals.TwoDayPrice.ToString
End Select
End Sub
End Class
Public Structure PowerWashRentals
Public Const HalfDayPrice As Double = 24
Public Const FullDayPrice As Double = 35
Public Const TwoDayPrice As Double = 50
Public Const halfDayText As String = "Half Day Rental"
Public Const FullDayText As String = "Full Day Rental"
Public Const TwoDayText As String = "Two Day Rental"
End Structure