gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:53:27 24 4
gpt4 key购买 nike

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

创建文本框:

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

}

最佳答案

也许使用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
}

您可能希望将TextBoxes分组为一个类,并让该类检查所有内容是否已填充。然后,您只需要一个 List并将该类作为通用类。

关于c# - C#Winforms动态创建的文本框的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44957855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com