首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误值的消息框

错误值的消息框
EN

Stack Overflow用户
提问于 2016-03-24 14:17:11
回答 2查看 147关注 0票数 1

我正在做一个关于vb.net的项目,我必须确定一个月中的天数,以及给定的年份是否是闰年。所有的代码都已完成。所有我不能做的是一个消息框将出现的编码,如果月份是不正确的。

代码语言:javascript
复制
Dim year, days As Double
Dim leap As Boolean
Dim monthint As Integer
Dim monthstr As String

days = 0
leap = False

year = txtTheyear.Text
monthstr = txtThemonth.Text

If monthstr = "January" Then
    monthint = 1
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If


If monthstr = "February" Then
    monthint = 2
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If


If monthstr = "March" Then
    monthint = 3
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "April" Then
    monthint = 4
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "May" Then
    monthint = 5
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "June" Then
    monthint = 6
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "July" Then
    monthint = 7
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "August" Then
    monthint = 8
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "September" Then
    monthint = 9
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "October" Then
    monthint = 10
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "November" Then
    monthint = 11
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)
End If



If monthstr = "December" Then
    monthint = 12
    leap = Date.IsLeapYear(year)
    days = System.DateTime.DaysInMonth(year, monthint)

    Lstbx1.Items.Add(year)
    Lstbx1.Items.Add(leap)
    Lstbx1.Items.Add(days)

End If





With Lstbx1.Items
    .Clear()
    .Add("Year" & vbTab & vbTab & "Is it a leap year" & vbTab & "Month" & vbTab & "Number of days")
    .Add("----" & vbTab & vbTab & "-----------------" & vbTab & "-----" & vbTab & "--------------")
    .Add(txtTheyear.Text & vbTab & vbTab & leap & vbTab & vbTab & txtThemonth.Text & vbTab & days)
End With

为一个消息框尝试过的代码:

代码语言:javascript
复制
If monthstr= "January" or "February" ...
Then ...
Else MsgBox ("Type the month correctly")
End if
EN

回答 2

Stack Overflow用户

发布于 2016-03-24 14:46:48

它需要是

代码语言:javascript
复制
If monthstr="January" or monthstr="February" ...

如果您想在这里使用IF,对于select,请参阅前面un-lucky提供答案

顺便说一句,你也可以用一种更短的方式(如果你想的话)来编写代码,只需使用下面这样的代码:

代码语言:javascript
复制
Private Sub btCreate_Click(sender As Object, e As RoutedEventArgs) Handles btStartButton.Click
    'replace constants with values from your textboxes
    Dim yearPart As String = "2010"
    Dim monthpart As String = "January"

    Dim dt As DateTime
    Try
        dt = DateTime.ParseExact("01 " + monthpart + " " + yearPart,
                                      "dd MMMM yyyy",
                                      Globalization.CultureInfo.InvariantCulture)
        'MsgBox(dt.Year & " " & dt.Month & " " & Date.IsLeapYear(dt.Year))
        Lstbx1.Items.Add(dt.Year)
        Lstbx1.Items.Add(Date.IsLeapYear(dt.Year)))
        Lstbx1.Items.Add(dt.Month)
    Catch ex As Exception
        MsgBox("Incorrect Entry..! Type the month correctly")
    End Try

End Sub

神奇之处在于MMMM短语中DateTime.ParseExact的第二个参数,因为这是一种表示月份的字面表示形式

票数 1
EN

Stack Overflow用户

发布于 2016-03-24 14:37:56

整个场景的简化代码:

代码语言:javascript
复制
    Dim isSuccess As Boolean = True '<-- variable for checking whether the process completed successfully
    Lstbx1.Items().Clear()
    Select Case monthstr
        Case "January", "jan", "january"
            monthint = 1
        Case "February", "feb", "february"
            monthint = 2
        Case "March", "mar", "march"
            monthint = 3
            'Write cases for other months too
        Case "December", "dec", "december"
            monthint = 12
        Case Else
            MsgBox("Incorrect Entry..! Type the month correctly")
    End Select
    'No wdo the operation here;
    If Not isSuccess Then
        leap = Date.IsLeapYear(year)
        days = System.DateTime.DaysInMonth(year, monthint)
    End If
    ' Here you can populate the List

这样使用的好处:

  • 可以通过使用select
  • 避免检查多个条件用户可以为January输入三个条件中的任何一个(“1月”、“1月”、“1月”)之前它将只接受January区分大小写)。
  • 根据您在问题中的请求;您可以在case else中显示一条自定义消息,如果所有其他条件均为假
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36194288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档