C#Winforms动态创建的文本框的错误处理

时间:2017-07-06 20:00:12

标签: c# winforms error-handling

我有两个在加载时动态创建的文本框。用户可以单击添加按钮,每次向界面添加两个新文本框。添加这些文本框后,它们也会添加到列表中。我正在尝试向我的项目添加错误处理,以确保在用户单击保存之前填写每个文本框。如果文本框为空,则应显示一个消息框:请填写所有消息框。 如果填写了文本框,则应显示一个消息框:您确定要进行此更改吗? 如果用户单击是,则应保存更改并显示消息框“已保存更改” 如果用户单击“否”,则消息框应消失,并且不保存更改。 消息框不按我预期的方式运行 以下是我到目前为止的情况:

创建文本框:

 private void ADDUserInfo(int rowCount, string password = "", string username = "")
            var Password = new TextBox();
            Password.Text = password;
            Password.Name = "Password" + rowCount;

            var Username = new TextBox();
            Username.Text = username;
            Username.Name = "Username" + rowCount;

            CaeUsersPanel.Controls.Add(Username);
            CaeUsersPanel.Controls.Add(Password);

            UsernameTextBoxes.Add(Username);
            PasswordTextboxes.Add(Password);
            }

文本框列表的全局声明:

List<TextBox> UsernameTextBoxes = new List<TextBox>();
List<TextBox> AliasTextBoxes = new List<TextBox>();
List<TextBox> PasswordTextboxes = new List<TextBox>();

保存按钮:

 for (int i = 0; i < UsernameTextBoxes.Count; i++)
            {
                var userName = UsernameTextBoxes[i];
                var password = PasswordTextboxes[i];
                _config.Environment.Users.User.Add(new EnvironmentUsersUser() { alias = aliasName.Text, userName = userName.Text, password = password.text, toDisplay = true });

            }

            configmgr.Serilize<Config>(_configurationTabData._objectSources.getEnviromentFileName, _config);


            for (int i = 0; i < UsernameTextBoxes.Count; i++)
            {
                var userName = UsernameTextBoxes[i];
                var password = PasswordTextboxes[i];
                if (aliasName.Text == "" || userName.Text == "" || password.Text == "")
                {
                    MessageBox.Show("All fields are required!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                  DialogResult result = MessageBox.Show("Are you sure you want to make these changes", "Warning", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
            {
                configmgr.Serilize<Config>(_configurationTabData._objectSources.getEnviromentFileName, _config);
                MessageBox.Show("Changes Saved")
            }
           }

            }

1 个答案:

答案 0 :(得分:1)

也许是这样的,使用LinQ?

if(UsernameTextBoxes.TrueForAll(t => t.Text.Length > 0) &&
    AliasTextBoxes.TrueForAll(t => t.Text.Length > 0) &&
    PasswordTextboxes.TrueForAll(t => t.Text.Length > 0))
{
    //Do stuff when everything is filled
}
else
{
    //Do stuff when one or more is empty 
}

您可能希望将TextBox组合成一个类,并使该类检查是否填充了所有内容。那么你只需要一个List这个类作为通用。