1

所以我正在制作一个带有单独班级的窗口表格,用于学生详细信息和国际学生。我需要验证我的学生/国际学生的年级分数是否大于 0 且小于 100。

我还想让出生日期显示为 dd/mm/yyyy,但目前它显示为那个加上时间。

我将在下面包含代码:

先出生日期

student1.DateOfBirth = DateTime.Parse(txtDateofbirth.Text).Date;

if (string.IsNullOrEmpty(txtDateofbirth.Text))
{
    MessageBox.Show("Please enter a DoB");
}

现在是年标记

try // Trying to do the thing in the curly braces
{
    student1.YearMark = Int32.Parse(txtYearMark.Text);
}
catch (Exception) // If it doesn't work skip the crash and print this
{
    MessageBox.Show("The Year mark must be a number and can't be empty");
} 
4

4 回答 4

1

我建议您使用 DateTimePicker 控件输入日期和 NumericUpDown 控件输入 YearMark,而不是使用 TextBox。

DateTimePicker 控件允许您定义显示格式并将条目限制在某个范围内。如果我没记错的话,Value 属性的类型是 DateTime,因此您不必解析字符串。

NumericUpDown 控件允许您定义允许值的范围。Value 属性是 Decimal 类型,但您可以安全地将其转换为 Int32。这比解析字符串要安全得多。

于 2012-10-18T21:25:31.413 回答
0

你也可以做一个简单的方法来测试这里也是一个例子

    IsDate(txtYearMark.Text);
    public static bool IsDate(string date)
    {
        DateTime Temp;
        return(DateTime.TryParse(date, out Temp)&&date.Length>=10)
    }
于 2012-10-18T21:29:25.670 回答
0
  1. 您需要获取 DateTime 对象和当前日期之间的差异,因此您可以创建一个 TimeSpan 对象并获取它的“Years”属性。

    TimeSpan diff = new DateTime().subtract(dateOfBirth);

    if(diff.Years > 0 && diff.Years < 100) isValid = true;

  2. 要以任何所需格式显示 DateTime 对象,请将 ToString() 方法与格式化程序一起使用。

    要解决您的确切问题,请尝试以下操作:

    dateOfBirth.ToString("dd/MM/yyyy"); //大写MM表示月份,小写MM表示分钟

于 2012-10-18T21:25:09.107 回答
0

日期函数的重载ToString()将允许您指定所需的确切格式。

Date l_date = Date.Today();
l_date.ToString( "dd/MM/yyyy" );

有关可用格式的更多信息,请访问文档:http:
//msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

可以通过函数将a 解析string为 an ,如下所示:intInt32.TryParse

string x = "32";
int y = -1;
if ( !x.TryParse( x, out y ) ){
    // The parse failed
}

然后您可以测试您的 int 的值以确定它是否在所需的范围内。

if ( y > 0 && y <= 100 ){
    // Do something
}
于 2012-10-18T21:20:59.687 回答