使用数组登录/注册表单

本文关键字:注册 注册表 表单 登录 数组 | 更新日期: 2023-09-27 18:17:50

我在传递数组的值时有问题。

我在一个类中创建了一个数组,然后我在frmMain(form1)中实例化它,然后我把一些值放在数组中(我注册了,我把用户名和密码放在数组中)。frmMain应该传递数组中的值,对吧?

我的问题是,当我实例化类(持有数组)在frmProfile(form2)它就像我从来没有把一些值在它。

简而言之,我希望数组可以以所有形式访问。我需要构造函数方法吗?例如get;设置;?)。

public class Tagasalo //this is the class i created
{
    public String[,] array = new String[5, 2];
}
这里是我的代码在frmMain(form1)
    Tagasalo arr = new Tagasalo();
    frmProfile profile = new frmProfile();
    int row;
    bool validInput = true;
    int tries = 3;

    public frmMain()
    {
        InitializeComponent();
    }
    public void btnSignUp_Click(object sender, EventArgs e)
    {
        if (txtUsernameS.Text.Trim() == String.Empty)
        {
            errorProvider1.SetError(txtUsernameS, "Please put a Username.");
        }
        else if (txtUsernameS.TextLength > 1 && txtUsernameS.TextLength < 4)
        {
            errorProvider1.SetError(txtUsernameS, "Your Username must have 4 or more characters.");
        }
        else
        {
            errorProvider1.Clear();
        }
        if (txtPasswordS.Text == String.Empty)
        {
            errorProvider2.SetError(txtPasswordS, "Please put a Password.");
        }
        else if (txtPasswordS.TextLength > 1 && txtPasswordS.TextLength < 6)
        {
            errorProvider2.SetError(txtPasswordS, "Your Password must have 6 or more characters.");
        }
        else
        {
            errorProvider2.Clear();
        }
        for (row = 0; row < 5; row++)
        {
            if (txtUsernameS.TextLength >= 4 && txtPasswordS.TextLength >= 6)
            {
                if (txtConfirmPassword.Text != txtPasswordS.Text)
                {
                    errorProvider3.SetError(txtConfirmPassword, "Your Password does not match.");
                }
                else if (txtConfirmPassword.Text == txtPasswordS.Text)
                {
                    if (arr.array[row, 0] == null && arr.array[row, 1] == null)
                    {
                        arr.array[row, 0] = txtUsernameS.Text;
                        arr.array[row, 1] = txtPasswordS.Text;
                        MessageBox.Show("Signed-Up Successfully!");
                        break;
                    }
                    else if(txtUsernameS.Text == arr.array[row,0])
                    {
                        MessageBox.Show("Username already Used.");
                        break;
                    }
                }
            }
        }
        if (row > 5)
        {
            MessageBox.Show("Sorry, maximum number of accounts has been reached.");
        }
    }

这是我的代码在frmProfile(form2)-在这个表单中,我只是想要标签显示用户的用户名。

    Tagasalo arr = new Tagasalo();
    int row;
    public frmProfile()
    {
        InitializeComponent();
    }
    private void changePasswordToolStripMenuItem_Click(object sender, EventArgs e)
    {
        frmChangePassword changepass = new frmChangePassword();
        changepass.Show();
        this.Hide();
    }
    private void logOutToolStripMenuItem_Click(object sender, EventArgs e)
    {
        frmMain logout = new frmMain();
        logout.Show();
        this.Hide();
    }
    public void frmProfile_Load(object sender, EventArgs e)
    {
        for (row = 0; row < 5; row++ )
        {
            if(arr.array[row,0] == arr.array[row,1])
            {
                lblUsername.Text = arr.array[row, 0];
                break;
            }
        }
    }

那么,我想修改密码。替换数组的值,当我退出时,数组再次为空。我无法用相同的帐户再次登录。

    Tagasalo arr = new Tagasalo();
    public frmChangePassword()
    {
        InitializeComponent();
    }
    private void btnSaveChanges_Click(object sender, EventArgs e)
    {
        if (txtCurrentPassword.Text == String.Empty)
        {
            errorProvider1.SetError(txtCurrentPassword, "Please type your Current Password.");
        }
        else
        {
            errorProvider1.Clear();
        }

        if (txtNewPassword.Text == String.Empty)
        {
            errorProvider2.SetError(txtNewPassword, "Please type your New Password.");
        }
        else
        {
            errorProvider2.Clear();
        }
        if (txtConfirmNewPassword.Text != txtNewPassword.Text)
        {
            errorProvider3.SetError(txtConfirmNewPassword, "Re-type your New Password.");
        }
        else
        {
            errorProvider3.Clear();
        }
        if(txtCurrentPassword.Text != String.Empty && txtNewPassword.Text != String.Empty && txtConfirmNewPassword.Text == txtNewPassword.Text)
        {
            MessageBox.Show("Changed Password Successfully!");
            frmProfile profile = new frmProfile();
            profile.Show();
            this.Hide();
        }
    }
    private void btnCancel_Click(object sender, EventArgs e)
    {
        frmProfile profile = new frmProfile();
        profile.Show();
        this.Hide();
    }

对不起,如果它太长了。放学后我在网上搜了好几天,还是找不到答案。

使用数组登录/注册表单

你想让变量在所有形式下都可访问是什么意思?

要访问另一个类中的变量,必须写classname。变量名来访问它们,对于您的示例,这将是:

Tagasalo。数组…做事……

如果你想创建一个类,它描述变量和/或对象的方法,你通过这个类的构造函数创建,然后访问它们,我建议阅读"类","对象","实例"首先,如果这对你没有帮助,再问一下这些知识。

另一件可能有用的事情是:如果你想要一个描述变量和/或方法的类,而你的应用程序的其余部分将能够创建该类的一个单一且唯一的实例,请参阅"单例类"。

希望这对你有帮助,具体说明你想做什么,我也许能帮助你更具体。

老实说,我不建议使用全局变量,因为它使用了不必要的资源。

然而,

你正在解释/描述的是一个全局变量。如果您正在使用windows窗体(我认为您是),您可以创建一个类(右键单击您的项目名称>添加>类)。叫它MyArrayClass。然后(正如您已经说过的)使用构造函数MyArray(){get;set}然后你可以通过:MyArrayClass.MyArray[i]访问它,其中[i]是你想要的索引。

一旦我找到一些好的文档,我会编辑这篇文章。

编辑:这个工作很棒(因为你是新人):http://www.dotnetperls.com/global-variable.

在Form2的构造函数中传递:

Form2 form2 = new Form2(arr);
form2.ShowDialog();

然后在Form2构造函数中:

public Form2(List<double> arr)
{
   //do stuff with it here
}

EDIT 2:对于你正在做的事情,这对你来说会更好:http://codemyne.net/articles/asp/creating-a-simple-registration-or-signup-and-login-or-signin-form-using-asp.net-and-sqlserver.aspx?visitid=171&type=2

编辑3

static class Global
{

 private static string _globalVar = "";
    public static string GlobalVar
    {
        get { return _globalVar; }
        set { _globalVar = value; }
    }
}

    GlobalClass.GlobalVar = "any string value"