我正在完成一项任务,并需要协助处理该流程的下一步。我理解如何创建用户对象,但我并不完全理解这些问题。我只是在寻求指导,所以我可以随时学习。表单成功提交后,他们要求我创建用户对象。这是否意味着我需要创建一个新的用户类并将所有数据成员,属性和方法放在那里?或者我是否留在静态主void类中并在那里编码?这是我到目前为止的问题和代码。我将发布整个项目,但突出显示我遇到的区域。 5号和6号是我被困的地方。
- 创建用户注册系统。
- 需要包含屏幕截图中显示的字段。代码将与之交互的表单控件需要将其名称更改为更有意义的名称。不要将textbox1保留为textbox1。
- 密码和确认密码字段需要相互匹配,无论是在提交页面时还是在确认密码字段失去焦点时。如果表单无效,则不会按如下所述处理页面。密码字段需要屏蔽密码。
- 主要是一个组合框(DropDownList样式),它将包含您选择的主要列表(至少5个)。根据所选的主要内容,您将填写专业下方专业下拉列表中的项目,供用户从这些项目中进行选择。
- **表单成功提交后,我们将使用表单中的值来创建用户对象
- 用户对象将由私有数据成员和属性组成,所有字段都是字符串,除了major之外,它将是枚举。**
- 清除按钮会将表单重置为初始空状态。 加载最后一个按钮将使用创建的最后一个用户对象重新填充表单,如果没有创建用户对象,则显示带有错误消息的MessageBox,指示没有要加载的数据
醇>
namespace Forms
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void passwordTxt_TextChanged(object sender, EventArgs e)
{
passwordTxt.PasswordChar = 'x';
passwordTxt.MaxLength = 11;
}
private void confPassTxt_TextChanged(object sender, EventArgs e)
{
confPassTxt.PasswordChar = 'x';
confPassTxt.MaxLength = 11;
}
private void Form1_Load(object sender, EventArgs e)
{
majorBox.Items.Add("");
majorBox.Items.Add("Math");
majorBox.Items.Add("Science");
majorBox.Items.Add("English");
majorBox.Items.Add("Philosophy");
majorBox.Items.Add("History");
}
private void submitBtn_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(firstNameTxt.Text) || string.IsNullOrEmpty(lastNameTxt.Text)
|| string.IsNullOrEmpty(userNameTxt.Text) ||
string.IsNullOrEmpty(passwordTxt.Text) || string.IsNullOrEmpty(confPassTxt.Text)
|| string.IsNullOrEmpty(majorBox.Text) || string.IsNullOrEmpty(specialtyBox.Text))
{
MessageBox.Show("You must enter in all fields before moving forward");
}
}
private void majorBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (majorBox.SelectedItem.ToString() == "Math")
{
specialtyBox.Items.Clear();
specialtyBox.Items.Add("Calculus");
specialtyBox.Items.Add("Statistics");
}
else if (majorBox.SelectedItem.ToString() == "Science")
{
specialtyBox.Items.Clear();
specialtyBox.Items.Add("Biology");
specialtyBox.Items.Add("Chemestry");
}
else if (majorBox.SelectedItem.ToString() == "English")
{
specialtyBox.Items.Clear();
specialtyBox.Items.Add("18th Centruy");
specialtyBox.Items.Add("Teacher");
}
else if (majorBox.SelectedItem.ToString() == "Philosophy")
{
specialtyBox.Items.Clear();
specialtyBox.Items.Add("Aristotal");
specialtyBox.Items.Add("Socrates");
}
else
{
specialtyBox.Items.Clear();
specialtyBox.Items.Add("Peace");
specialtyBox.Items.Add("War");
}
}
private void confPassTxt_Validating(object sender, CancelEventArgs e)
{
if (confPassTxt.Text != passwordTxt.Text)
{
wrongPass.SetError(confPassTxt, "Worng password");
}
else
{
wrongPass.SetError(confPassTxt, "");
}
}
}
}
答案 0 :(得分:0)
您只需定义用户类:
class User {
private int id;
private string name;
private string job;
...
}
然后在一些验证后的submitBtn_Click
方法中创建一个User类的新实例:
private void submitBtn_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(firstNameTxt.Text) || string.IsNullOrEmpty(lastNameTxt.Text)
|| string.IsNullOrEmpty(userNameTxt.Text) ||
string.IsNullOrEmpty(passwordTxt.Text) || string.IsNullOrEmpty(confPassTxt.Text)
|| string.IsNullOrEmpty(majorBox.Text) || string.IsNullOrEmpty(specialtyBox.Text))
{
MessageBox.Show("You must enter in all fields before moving forward");
} else {
User userObj = new User();
}
}
你也应该在你的用户类中加入一个构造函数来填充User类成员。
编辑:
好的,你应该删除类定义中的private string confPassword;
行,因为它只是一个验证字段。主要字段也应该是数字,因为major的id应该存储在数据库中。
class Members
{
private string firstName;
private string lastName;
private string userName;
private string password;
private int major;
private int specialty;
public Members(string firstName, string lastName, string userName,string password, int major, int specialty)
{
this.firstName = firstName;
this.lastName = lastName;
this.userName = userName;
this.password = password;
this.major = major;
this.specialty = specialty;
}
}
那么你应该在Submit_Click方法下的Form Class中有这样的东西。
else
{
Members user = new Members(firstNameStrVal, lastNameStrVal, userNameStrVal, passwordStrVal, majorIntVal, specialtyIntVal);
....
your database insert will be here
}
现在,用户对象包含表单数据并准备好进行数据库事务。