Как заполнить комбинированный список ArrayList из другой формы? - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу, чтобы пользователи создавали свои учетные записи, которые будут храниться в массиве списков в форме регистрации, а в форме входа в систему есть поле со списком всех имен пользователей, чтобы пользователь мог выбрать свое имя пользователя, ввести свой пароль и продолжить.

Я получаю сообщение об ошибке cmb_user1.Items.Add(username);, где имя пользователя не существует в текущем контексте.

Класс:

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;
        }

    }

Форма регистрации:

 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!");
            }
        }
    }

Форма входа:

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();

        }
    }
}

1 Ответ

0 голосов
/ 29 апреля 2019

Зачем вам нужно username? Имя пользователя уже существует в вашем архиве, но если оно вам действительно нужно, попробуйте следующее:

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);
}

Или, если вам нужны имена пользователей, входящие в arraylist, попробуйте:

foreach(var item in allUsers)
{
    cmb_user1.Items.Add(item.username);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...