解决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
相关产品推荐
相关产品推荐

