You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决VB中Date数组&运算符未定义及MonthCalendar加粗日期合并问题

解决MonthCalendar控件合并加粗日期的问题

在VB.NET中,数组无法直接用&或,运算符拼接,你可以通过以下两种方式合并新旧加粗日期数组:

方案1:使用LINQ的Concat方法(推荐)

通过Concat合并两个数组,再转换为新的Date数组赋值给BoldedDates,需要确保项目引用了System.Linq命名空间:

Private Sub BTN_Submit_Click(sender As Object, e As EventArgs) Handles BTN_Submit.Click
    ' 获取原有加粗日期数组
    Dim existingBoldedDates() As Date = FRM_EventsCalendar.MonthCalendar1.BoldedDates
    ' 解析输入的新日期(无需转字符串再转回,直接使用DateTime类型)
    Dim newDate As DateTime = Convert.ToDateTime(TXT_Date.Text)
    ' 合并新日期与原有日期数组,转为新数组
    Dim mergedDates() As Date = existingBoldedDates.Concat({newDate}).ToArray()
    ' 重新赋值给月历控件的加粗日期
    FRM_EventsCalendar.MonthCalendar1.BoldedDates = mergedDates

    MsgBox("Date Added")
End Sub

方案2:手动创建新数组(不依赖LINQ)

如果不想使用LINQ,可以手动创建新数组,复制原有元素后添加新日期:

Private Sub BTN_Submit_Click(sender As Object, e As EventArgs) Handles BTN_Submit.Click
    Dim existingBoldedDates() As Date = FRM_EventsCalendar.MonthCalendar1.BoldedDates
    Dim newDate As DateTime = Convert.ToDateTime(TXT_Date.Text)
    ' 创建长度为原数组+1的新数组
    Dim mergedDates(existingBoldedDates.Length) As Date
    ' 复制原有日期到新数组
    Array.Copy(existingBoldedDates, mergedDates, existingBoldedDates.Length)
    ' 将新日期添加到数组末尾
    mergedDates(existingBoldedDates.Length) = newDate
    ' 赋值给月历控件
    FRM_EventsCalendar.MonthCalendar1.BoldedDates = mergedDates

    MsgBox("Date Added")
End Sub

额外优化提示

  • 避免多余的类型转换:直接使用解析后的DateTime对象,无需转成字符串再转回Date。
  • 添加日期格式验证,防止无效输入报错:
    Dim format As String = "dd/MM/yyyy"
    Dim newDate As DateTime
    If DateTime.TryParseExact(TXT_Date.Text, format, Nothing, Globalization.DateTimeStyles.None, newDate) Then
        ' 执行合并逻辑
    Else
        MsgBox("输入日期格式错误,请使用dd/MM/yyyy格式")
    End If
    

内容的提问来源于stack exchange,提问作者Dylbot gaming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:05:17