我正在尝试创建一个简单的登录屏幕,其中包含2个文本框和1个按钮。当我在第一个文本框(用户名)和第二个文本框(密码)中插入的字符串与我之前定义的字符串匹配时,按钮Enabled属性应该变为True,单击时,它应该打开另一个表单,这是我到目前为止编写的代码:
public partial class LogInScreen : Form
{
public LogInScreen()
{
InitializeComponent();
string lietotajvards = "user";
string parole = "user";
if (textBox1.Text == lietotajvards && textBox2.Text == parole)
{
button1.Enabled = true;
}
else
{
button1.Enabled = true;
}
}
private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
this.Hide();
f1.Show();
}
}
问题是,我的代码没有按预期工作,按钮一直处于启用状态。问题出在哪里?
答案 0 :(得分:2)
您的代码只会在表单初始化时执行一次,您必须在textchanged
和textbox1
上使用textbox2
事件,之后您可以使用您编写的代码检查是否需要启用该按钮。在其他地方,你必须disable
按钮。
文字更改了事件处理程序:
void textBox1_TextChanged(object sender, EventArgs e)
{
handleLoginButton();
}
void textBox2_TextChanged(object sender, EventArgs e)
{
handleLoginButton();
}
启用/停用按钮:
private void handleLoginButton(){
string lietotajvards = "user";
string parole = "user";
if (textBox1.Text == lietotajvards && textBox2.Text == parole)
{
button1.Enabled = true;
}
else
{
button1.Enabled = false;
}
}
答案 1 :(得分:1)
构造函数只对表单运行一次,您需要处理输入控件的文本更改事件,然后再次重新评估您的条件。
此外,应该不用说(尽管这里有人说),这是处理登录应用程序的一种可怕方式。