简体   繁体   English

如何从另一个Form中使用ArrayList填充组合框?

[英]How to populate combobox with ArrayList from another Form?

I want users to create their accounts, which will be stored in an arraylist in the Sign up form, while the Log in form has a combobox with all the usernames so the user can select their username, type their password and proceed. 我希望用户创建他们的帐户,这些帐户将存储在注册表单的arraylist中,而登录表单中有一个包含所有用户名的组合框,以便用户可以选择他们的用户名,键入他们的密码并继续。

I get an error on cmb_user1.Items.Add(username); 我在cmb_user1.Items.Add(username);上收到错误cmb_user1.Items.Add(username); where username does not exist in the current context. 其中当前上下文中不存在用户名。

Class: 类:

public class User
    {
        public string fname;
        public string lname;
        public string username;
        public string password;

        public string Fname
        {
            get { return fname; }
            set { fname = value; }
        }

        public string Lname
        {
            get { return lname; }
            set {lname = value; }
        }

        public string Username
        {
            get { return username; }
            set { username = value; }
        }

        public string Password
        {
            get { return password; }
            set { password = value; }
        }

        public User() { }

        public User (string fname, string lname, string username, string password)
        {
            this.fname = fname;
            this.lname = lname;
            this.username = username;
            this.password = password;
        }

    }

Sign up form: 注册表格:

 public partial class sign_up_form : Form
    {
        ArrayList allUsers = new ArrayList();

        public sign_up_form()
        {
            InitializeComponent();
        }

        private void btn_create_Click(object sender, EventArgs e)
        {
            try
            {

                if (txt_password.Text == txt_confirm_password.Text)
                {
                    allUsers.Add(new User(txt_fname.Text, txt_lname.Text, txt_username.Text, txt_password.Text));
                    log_in_form login= new log_in_form(this, allUsers);
                    login.Show();
                    this.Hide();
                }
            }
            catch 
            {
                MessageBox.Show("Something went wrong!");
            }
        }
    }

Log in form: 登录表单:

public partial class log_in_form : Form
    {
        sign_up_form formParent;
        ArrayList allUsers;
        public log_in_form(sign_up_form par, ArrayList _allUsers)
        {
            InitializeComponent();
            this.formParent = par;
            this.allUsers = _allUsers;

            cmb_user1.DataSource = allUsers;
            cmb_user1.Items.Add(username);
        }

        private void btn_signup_Click(object sender, EventArgs e)
        {
            sign_up_form signup = new sign_up_form();
            signup.Show();

        }
    }
}

Why do you needed username ? 你为什么需要username Username already exists in your arraylist but if you really need it, try this: 用户名已存在于您的arraylist中,但如果您确实需要它,请尝试以下操作:

if (txt_password.Text == txt_confirm_password.Text)
{
    allUsers.Add(new User(txt_fname.Text, txt_lname.Text, 
    txt_username.Text, txt_password.Text));
    log_in_form login= new log_in_form(this, allUsers,createdUser);
    login.Show();
    this.Hide();
}

public log_in_form(sign_up_form par, ArrayList _allUsers,Users newUser)
{
    InitializeComponent();
    this.formParent = par;
    this.allUsers = _allUsers;

    cmb_user1.DataSource = allUsers;
    cmb_user1.Items.Add(newUser);
}

Or if you need usernames which are in arraylist try: 或者,如果您需要arraylist中的用户名,请尝试:

foreach(var item in allUsers)
{
    cmb_user1.Items.Add(item.username);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM