我正尝试创建一个WPF应用程序,用于学生注册,其中包含姓名、学号、学分等简单表单。我有一个MainWindow.xaml
和一个Student.cs
。
在我的MainWindow.xaml
中,我有一个高级按钮,应该根据学分提升学生的等级(如果学生的学分超过120分,则等级应提升到“2”)。
这是带有Advance()方法的Student.cs:
class Student
{
private int matric;
private int level;
private int credits;
public Student() { }
public int Matric
{
get { return matric; }
set
{
//there should be a range check for the
matric = value;
}
}
public int Level
{
get { return level; }
set { level = value; }
}
public int Credits
{
get { return credits; }
set { credits = value; }
}
//this is my problem:
public int Advance()
{
if (Credits >= 0 && Credits < 120)
{
return Level;
}
else if (credits >= 120)
{
return Level++;
}
else if (credits >= 240)
{
return Level++;
}
else if (Credits >= 360)
{
return Level++;
}
else
{
return 0;
}
}
}
MainWindow.xaml,只包括按钮和文本框的部分。
<TextBox x:Name="txtLevel" HorizontalAlignment="Left" Height="23" Margin="184,266,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="txtCredit" HorizontalAlignment="Left" Height="23" Margin="184,328,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Button x:Name="btnAdvance" Content="Advance" HorizontalAlignment="Left" Margin="324,267,0,0" VerticalAlignment="Top" Width="75" Click="btnAdvance_Click"/>
我试图调用方法MainWindow.xaml.cs
。public partial class MainWindow : Window
{
Student student;
public MainWindow()
{
InitializeComponent();
}
private void btnSet_Click(object sender, RoutedEventArgs e)
{
student = new Student();
student.Credits = int.Parse(txtCredit.Text);
student.Level = int.Parse(txtLevel.Text);
}
private void btnAdvance_Click(object sender, RoutedEventArgs e)
{
student.Advance(); //this should be the call of the method
}
}
当然它没起作用... 有人可以帮帮我吗?
编辑 这就是我现在的代码,还是不起作用。
public void Advance()
{
if (Credits >= 0 && Credits < 120)
{
Level = 1;
}
else if (credits >= 120 && Level == 1)
{
Level = 2;
}
else if (credits >= 240 && Level == 2)
{
Level = 3;
}
else if (Credits >= 360 && Level == 3)
{
Level = 4;
}
else if (Level == 4)
{
MessageBox.Show("You can't advance more!");
}
else
{
MessageBox.Show("Advance is not possible!");
}
}
student
中的更改,则需要在调用student.Advance()
之后更新txtLevel
。 - crashmstrtxtLevel.Text = student.Level.ToString();
?这只是在btnSet_Click
中所做的相反操作(但您应该检查以确保sudent != null
,并且还需要考虑何时创建一个new student
以及如果他们继续点击您的Advance
按钮会发生什么)。 - crashmstr