我是C#的新手。我想在textbox1中输入密码来登录我的表单。此登录按钮启用某些控件。这有效。这是问题的起点。我也在更改密码部分,我在textbox2中输入旧密码,在textbox3中输入新密码,在文本框4中确认密码。我想要的是从textbox3或textbox4更新密码,然后设置为密码。因此无论在textbox3或textbox 4中输入什么,现在都是密码。当我在textbox1中输入这个新的更改密码时,它会登录。我已经尝试了所有我能想到的解决方案。这是我正在使用的代码。
private void button14_Click(object sender, EventArgs e) // Main Screen Password Login Button
{
String passWord;
passWord = "login";
if (textBox1.Text == passWord)
{
passWord = textBox3.Text;
// textBox1.Clear();
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = true;
button4.Enabled = true;
button5.Enabled = true;
button6.Enabled = true;
button7.Enabled = true;
button8.Enabled = true;
button9.Enabled = true;
button10.Enabled = true;
button11.Enabled = true;
button12.Enabled = false;
button16.Enabled = true;
button16.Visible = true;
button20.Enabled = true;
numericUpDown1.Enabled = true;
numericUpDown2.Enabled = true;
button14.Click += ResetTimer;
}
else
{
MessageBox.Show("Password is Incorrect");
textBox1.Clear();
}
}
private void button19_Click(object sender, EventArgs e) // Admin Confirm Old Password Button
{
// String passWord;
// passWord = textBox2.Text;
if (textBox1.Text == textBox2.Text)
{
//MessageBox.Show("Password is Correct");
textBox3.Enabled = true;
textBox4.Enabled = true;
}
else
{
MessageBox.Show("Password is Incorrect");
}
private void button17_Click(object sender, EventArgs e) // Admin Update New password Button
{
String passWord;
//passWord = textBox3.Text;
// passWord = textBox3.Text;
// passWord = textBox4.Text;
if(textBox3.Text == textBox4.Text)
{
passWord = textBox3.Text;
MessageBox.Show("Password Changed");
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox3.Enabled = false;
textBox4.Enabled = false;
}
else
{
MessageBox.Show("Password Does Not Match");
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox3.Enabled = false;
textBox4.Enabled = false;
}
button17.Click += ResetTimer;
}
所以当我点击button17时,我希望密码更改为textbox3或textbox4中输入的内容。然后,此新密码将用于登录textbox1。我希望我能正确描述我的问题。任何帮助都感激不尽。谢谢。 珍。
答案 0 :(得分:4)
在button17_Click()
中,您有一个名为passWord
的本地变量。分配新值时,将其分配给该局部变量。在button19_Click()
中,您有另一个 - 不同 - 具有相同名称的局部变量。请立即阅读MSDN on Variable and Method Scope!
您需要的是一个全局变量,它存储有效密码,并删除具有该名称的所有局部变量。只需使用global进行登录和更改过程。
答案 1 :(得分:2)
您的问题是变量范围。如果在方法中声明它,它将仅在该方法的单次执行中可用。如果你在button14_Click中定义了一个密码变量,并且在button17_Click中再次定义了一个密码变量,这些将是两个不同的东西,只有在执行给定按钮的OnClick事件时才会存在(假设这些方法被正确分配给事件处理程序) )。
ParsePush push = new ParsePush();
push.setChannel("STATE_SLEEP");
push.setMessage(message);
push.sendInBackground();
ParsePush push = new ParsePush();
push.setChannel("STATE_AWAKE");
push.setMessage(message);
push.sendInBackground();
答案 2 :(得分:1)
如果我说得对,你在String passWord
以及button14_Click
方法中声明了button17_Click
变量。
现在,button17_Click
方法中更改的密码值仅在button17_Click
范围内,不会反映在button14_Click
声明中。
在任何仅方法之外声明passWord变量。 (在班级)
我想这是学习项目,因为无论何时重启应用程序,密码都会根据您的声明重置。对于实际项目,您需要有一些东西来存储您的用户详细信息,如数据库。 希望这会有所帮助。
答案 3 :(得分:0)
一些事情 - 将您的项目命名为textbox1
,将其命名为现在有意义的事情,这是一个难以理解的乱七八糟的混乱。
您似乎没有使用任何数据库来跟踪密码,所以我假设您已经意识到密码将被设置回"登录"在每次运行的应用程序。
它看起来像" button17_click"可能是您的密码更改了...您正在使用本地变量"密码"在两个单独的方法(button17_click和button14_click)中,他们不会彼此了解,因为他们是本地范围的。如果有什么东西只是让它们变成类而不是方法,那应该可以解决你的问题。
private string Password = "login"
private void button14_Click(object sender, EventArgs e) // Main Screen Password Login Button
{
if (textBox1.Text == PassWord)
{
Password = textBox3.Text;
// textBox1.Clear();
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = true;
button4.Enabled = true;
button5.Enabled = true;
button6.Enabled = true;
button7.Enabled = true;
button8.Enabled = true;
button9.Enabled = true;
button10.Enabled = true;
button11.Enabled = true;
button12.Enabled = false;
button16.Enabled = true;
button16.Visible = true;
button20.Enabled = true;
numericUpDown1.Enabled = true;
numericUpDown2.Enabled = true;
button14.Click += ResetTimer;
}
else
{
MessageBox.Show("Password is Incorrect");
textBox1.Clear();
}
}
private void button17_Click(object sender, EventArgs e) // Admin Update New password Button
{
if(textBox3.Text == textBox4.Text)
{
Password = textBox3.Text; // update the class variable Password to be the new password
MessageBox.Show("Password Changed");
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox3.Enabled = false;
textBox4.Enabled = false;
}
else
{
MessageBox.Show("Password Does Not Match");
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox3.Enabled = false;
textBox4.Enabled = false;
}
button17.Click += ResetTimer;
}
答案 4 :(得分:0)
我看到你一般都是从WinForms和C#编程开始的
与第一个答案一样,您的passWord变量是方法button17_Click和button14_Click的本地变量。首先应该将密码放在一个安全的地方。对于启动器,您可以在项目树中使用“属性 - >设置”
创建“String”类型的“Password”条目,为其指定初始值,然后在代码中使用此属性(而不是passWord变量)。这些属性是整个项目的全局属性。如果您想在这些设置中引用“密码”属性,则应通过“Properties.Settings.Default.Password”引用它。
希望这会有所帮助,但正如我之前所写的那样 - 这只是为了开始。
顺便说一下 - 请有意义地命名控件(文本框,按钮等)以保持代码清晰易读祝你好运!