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