我有一个简单的库存应用程序,我正在努力帮助自己学习C#。我有一个注册Windows窗体,它将用户添加到数据库,以便他们可以登录到该应用程序。有用。但是我现在正在努力添加一些文本框验证。我有三个文本框,如果它们是空的,它们会在它们旁边填充标签。但是,我无法弄清楚如何在输入文本后将标签设为null或隐藏。有什么建议吗?
这是我在createButton_Click方法上的代码:
private void createButton_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|FAMDatabase.accdb");
OleDbCommand fcmd = new OleDbCommand("INSERT INTO Login([UserName],[Password])" + "values(@username,@password)", con);
fcmd.Parameters.AddWithValue("@username", newUserTextBox.Text);
fcmd.Parameters.AddWithValue("@password", newPasswordTextBox.Text);
if (string.IsNullOrEmpty(newUserTextBox.Text))
{
reqName.Text = ("Please enter a User Name");
}
if (string.IsNullOrEmpty(newPasswordTextBox.Text))
{
reqPW.Text = ("Please enter a Password");
}
else if (newPasswordTextBox.Text != newPasswordTextBox2.Text)
{
reqPW2.Text = ("Passwords Do Not Match");
}
else
{
con.Open();
int i = fcmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(
"User Successfully Created",
"",
MessageBoxButtons.OK,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1);
this.Close();
}
}
答案 0 :(得分:1)
您可以使用css属性visiblity: hidden;
,css属性display: none;
,或者只需将文本更改为空字符串。
答案 1 :(得分:1)
我不确定我是否关注你的评论:
我无法弄清楚如何在输入文字后将标签设为空或隐藏
使标签为空可能,但要隐藏标签,您只需将标签文本设置为空字符串即可。示例:reqName.Text = "";
。
您可以在用户按下创建按钮后设置标签,这似乎是发布的代码正在执行的操作。但是,如果您希望在用户键入文本框时隐藏/显示这些标签,但在用户按下创建按钮之前,则需要为每个文本框设置一些事件,以便在用户完成后进行相应的标签更改输入其中一个文本框。一个方便的事件是每个文本框的TextChanged
事件。文本更改后,您可以为该文本框设置适当的标签。
使用这个,我建议的另一件事是不要将用户验证与插入数据库混合。示例:在按钮单击方法的开头,设置要使用尚未验证的值插入数据库的参数。如果任何文本框文本无效,则不需要这样做。因此,将此用户验证与插入数据库分开将使事情变得更容易和更合理。
下面是一个方法ValidUserInput
,用于检查用户输入的有效性,如果数据有效则返回true,否则返回false。该方法还返回一个字符串消息,以指示数据无效时的问题。然后在按钮单击事件中,您可以检查有效性,如果有效,则将其添加到数据库。我注释掉了添加到数据库,因为它似乎可能对你有用。我还添加了一个结果标签,以指示如果用户输入无效,问题是什么。
三个事件用于在用户输入时更新标签。两个辅助方法:ClearLabels
和SetLabels
用于清除和设置表单上的标签。希望这会有所帮助。
public Form1() {
InitializeComponent();
ClearLabels();
SetLabels();
}
private void createButton_Click(object sender, EventArgs e) {
string statusString = "";
if (!ValidUserInput(out statusString)) {
lblStatus.Text = statusString;
}
else {
///OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|FAMDatabase.accdb");
//OleDbCommand fcmd = new OleDbCommand("INSERT INTO Login([UserName],[Password])" + "values(@username,@password)", con);
//fcmd.Parameters.AddWithValue("@username", newUserTextBox.Text);
//fcmd.Parameters.AddWithValue("@password", newPasswordTextBox.Text);
//con.Open();
//int i = fcmd.ExecuteNonQuery();
//con.Close();
MessageBox.Show("User Successfully Created","", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
//this.Close();
}
}
private bool ValidUserInput(out string message) {
ClearLabels();
if (string.IsNullOrEmpty(newUserTextBox.Text)) {
reqName.Text = ("Please enter a User Name");
message = "UserName can not be blank!";
return false;
}
if (string.IsNullOrEmpty(newPasswordTextBox.Text)) {
reqPW.Text = ("Please enter a Password");
message = "Password can not be blank!";
return false;
}
if (string.IsNullOrEmpty(newPasswordTextBox2.Text)) {
reqPW2.Text = ("Please enter a Password ");
message = "Password verification can not be blank!";
return false;
}
if (newPasswordTextBox.Text != newPasswordTextBox2.Text) {
reqPW.Text = ("Passwords Do Not Match");
reqPW2.Text = ("Passwords Do Not Match");
message = "Password must match!";
return false;
}
message = "Valid User Input";
return true;
}
private void ClearLabels() {
reqName.Text = "";
reqPW.Text = "";
reqPW2.Text = "";
lblStatus.Text = "";
}
private void SetLabels() {
ClearLabels();
if (string.IsNullOrEmpty(newUserTextBox.Text)) {
reqName.Text = "Please enter a User Name";
}
if (string.IsNullOrEmpty(newPasswordTextBox.Text)) {
reqPW.Text = "Please enter a Password";
}
if (string.IsNullOrEmpty(newPasswordTextBox2.Text)) {
reqPW2.Text = "Please enter a Password";
}
lblStatus.Text = "Enter userName and password";
}
private void newUserTextBox_TextChanged(object sender, EventArgs e) {
if (string.IsNullOrEmpty(newUserTextBox.Text)) {
reqName.Text = "Please enter a User Name";
}
else {
reqName.Text = "";
}
}
private void newPasswordTextBox_TextChanged(object sender, EventArgs e) {
if (string.IsNullOrEmpty(newPasswordTextBox.Text)) {
reqPW.Text = "Please enter a Password";
} else {
reqPW.Text = "";
}
}
private void newPasswordTextBox2_TextChanged(object sender, EventArgs e) {
if (string.IsNullOrEmpty(newPasswordTextBox2.Text)) {
reqPW2.Text = "Please enter a Password";
} else {
reqPW2.Text = "";
}
}