VB.NET Select Case仅前两个分支生效问题求助
问题分析与修复方案
你的代码核心问题出在Select Case的条件写法错误:每个Case里的逗号代表逻辑“或”,而非你预期的区间范围。比如第二个分支Case Is >= 51, Is < 500,实际逻辑是“只要数值≥51 或者 <500就匹配”——所有≥51的数值都会触发这个分支,后续分支永远没机会执行。
修正步骤
- 使用
To关键字定义连续数值区间,这是VB.NET中Select Case指定范围的标准方式; - 合并两个独立的Select Case逻辑,减少冗余代码;
- 简化按钮启用状态的判断逻辑,让代码更简洁。
修正后的完整代码
Public Class Form1 Private Sub Exit_Btn_Click(sender As Object, e As EventArgs) Handles AhhFreeAtLastOhGabrielNowDawnsThyReckoningAndThyGoreShallGlistinForTheTemplesOfManCreatureOfSteelMyGratitudeUponTheeForrMyFreedomButTheCrimesThatThyKindHaveCommitedAgienstHumanityAreNotForgottenAndThyPunishmentIsExiting_Btn.Click End End Sub Private Sub Followers_Txt_TextChanged(sender As Object, e As EventArgs) Handles Followers_Txt.TextChanged Dim F As Integer Dim FollowersOk = Integer.TryParse(Followers_Txt.Text, F) ' 简化按钮启用逻辑 Conferm_Btn.Enabled = FollowersOk If Not FollowersOk Then Followers_Txt.Text = "" ' 解析失败时重置显示内容 Celebrity_Pic.Image = Nothing Celebrity_Lbl.Text = "" Return End If ' 合并图片与文本的Select Case逻辑 Select Case F Case < 50 Celebrity_Pic.Image = My.Resources.stupid_idiot Celebrity_Lbl.Text = "Elon" Case 51 To 499 Celebrity_Pic.Image = My.Resources.dream Celebrity_Lbl.Text = "Clay" Case 501 To 9999 Celebrity_Pic.Image = My.Resources.Doug_Bowser Celebrity_Lbl.Text = "Doug Bowser" Case 10001 To 499999 Celebrity_Pic.Image = My.Resources.mathew_patrick Celebrity_Lbl.Text = "Mathew Patrick" Case >= 500001 Celebrity_Pic.Image = My.Resources.Mark_anthony Celebrity_Lbl.Text = "Mark Edward Fischbach" End Select End Sub End Class
关键修改说明
- 将
Case Is >= 51, Is < 500改为Case 51 To 499,明确指定连续数值区间; - 合并两个Select Case,避免重复的条件判断;
- 解析失败时添加重置显示内容的逻辑,优化用户体验;
- 直接用
FollowersOk的布尔值赋值给Conferm_Btn.Enabled,简化判断逻辑。
内容的提问来源于stack exchange,提问作者Jack Smith
相关产品推荐
相关产品推荐

