需要C#密码帮助

时间:2015-06-11 11:23:31

标签: c#

我是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。我希望我能正确描述我的问题。任何帮助都感激不尽。谢谢。 珍。

5 个答案:

答案 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”引用它。
希望这会有所帮助,但正如我之前所写的那样 - 这只是为了开始。
顺便说一下 - 请有意义地命名控件(文本框,按钮等)以保持代码清晰易读祝你好运!