如何创建包含日期值的数组并以格式(dd / mm / yyyy)存储它。目前,我还得到了输入日期的时间。我的目标是将一个人的出生日期存储在学生数据库中。是否也可以在今天之前限制DOB?
Public Class frmStudentDB
Dim CurrentIndex As Integer
Dim StudentName(20) As String
Dim StudentMark(20) As Integer
Dim StudentDOB(20) As Date = StudentDOB.ToString("dd/MM/yyyy")
Dim MyFormat As String = "{0, -20}{1,-10}{2,4}"
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim Name As String
Dim DOB As Date
Dim Mark As Integer
If CurrentIndex = 20 Then
MsgBox("The array is FULL!")
ElseIf txtName.Text = "" Or txtDOB.Text = "" Or txtMark.Text = "" Then
MsgBox("Please fill in the fields as they cannot be left empty")
ElseIf (IsNumeric(txtMark.Text)) = False Then
MsgBox("Please enter a number for mark.")
ElseIf (Integer.Parse(txtMark.Text) > 100) Or (Integer.Parse(txtMark.Text) < 1) Then
MsgBox("Mark has to be between 1-100")
Else
Name = txtName.Text
CurrentIndex = CurrentIndex + 1
StudentName(CurrentIndex) = Name
txtName.Clear()
DOB = txtDOB.Text
CurrentIndex = CurrentIndex + 1
StudentDOB(CurrentIndex) = DOB
txtDOB.Clear()
Mark = txtMark.Text
CurrentIndex = CurrentIndex + 1
StudentMark(CurrentIndex) = Mark
txtMark.Clear()
txtName.Focus() 'Position cursor for input of next student's name
lstOutput.Items.Add(String.Format(MyFormat, Name, DOB, Mark))
End If
End Sub
Private Sub frmStudentDB_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
CurrentIndex = -1
lstOutput.Items.Add(String.Format(MyFormat, "Name", "DOB", "Mark"))
End Sub
结束班
答案 0 :(得分:0)
首先,StudentDOB.ToString(...)
会返回您正在尝试分配给数组的 单字符串 。由于String
≠Array
这样做是不可能的。
如果你要做的是强加格式限制,这也是不可能的。每次向数组添加内容时,都必须处理,即在此行:
StudentDOB(CurrentIndex) = DOB
由于DOB
是Date
,您可以使用ToString(...)
重载。
其次,您也可以在列表框中获得时间,因为您只传递了DOB
,这样就可以自行选择格式。相反,你应该传递已经格式化的字符串:
lstOutput.Items.Add(String.Format(MyFormat, Name, CurrentDOB(CurrentIndex), Mark))
第三,由于某种原因,您在代码中的不同位置增加CurrentIndex
三次。这将导致您的阵列不同步并快速“充分”。
从CurrentIndex = 0
开始,然后只有在 后修改所有数组才增加一次。最好在致电lstOutput.Items.Add(...)
之后。
最后,我建议TextBox
使用DateTimePicker
而不是txtDOB
,因为它不允许非日期输入。
这也使您可以指定允许的最小和最大日期。要将最大日期设置为今天之前,您可以将其置于Form.Load
事件中:
dtpDOB.MaxDate = Date.Now.AddDays(-1)