【发布时间】:2017-07-30 17:03:38
【问题描述】:
我有一个应用程序,其中有组合框。在这些组合框中,我希望自动填充单位。我已经建立了一个有select..case 条件的代码。 case 语句为真,但不执行真 case 语句后面的代码。我已经通过断点分析了,也显示了True但是没有执行,跳转到最后。请指教。
Private Sub Load_units_combo_boxes()
Dim ComboBoxes As New ArrayList
For Each ComboBox In Me.Controls
If ComboBox.Name.Contains("Units") And TypeOf ComboBox Is ComboBox Then
ComboBoxes.Add(ComboBox)
End If
Next
For Each ComboBox In ComboBoxes
Select Case ComboBox.name.ToString
Case ComboBox.name.ToString.Contains("Pressure")
For Each unit In _units
If unit.contains("Pressure") Then
unit.replace("Pressure", "")
ComboBox.items.add(unit)
End If
Next
Case ComboBox.name.ToString.Contains("Distance")
For Each unit In _units
If unit.contains("Distance") Then
unit.replace("Distance", "")
ComboBox.items.add(unit)
End If
Next
End Select
Next
End Sub
Public _units As New ArrayList
Private Sub units_collection()
Dim units As New Units_and_conversions
Dim properties = units.GetType().GetProperties()
For Each prop In properties
_units.Add(prop.Name)
Next
End Sub
Public Class Units_and_conversions
Private universal_distance_unit As Double = 1
Private universal_pressure_unite As Double = 1
Public Property Distance_Meter() As Double
Get
Return universal_distance_unit
End Get
Set(value As Double)
value = universal_distance_unit
End Set
End Property
Public Property Distance_MilliMeter() As Double
Get
Return 0.001 * universal_distance_unit
End Get
Set(value As Double)
value = 0.001 * universal_distance_unit
End Set
End Property
结束类
【问题讨论】:
-
即使在
Option Strict下也无法编译。测试,ComboBox.name.ToString.Contains("Pressure")将导致 True 或 False。该代码试图将其与控件名称进行比较。无需在字符串属性上使用ToString()。 -
Select case true 是你的意思。
-
如果我不使用 ToString 它会出错并且不编译。
-
如果您编辑了您的问题以包含
_units是什么(或其中的一个有用的小样本),那么我们很可能能够为您提供一些建议。 -
您将
Case语句与If语句混淆了。If语句检查True。Case语句检查与对应的Select是否相等。
标签: vb.net select-case