【发布时间】:2020-12-26 17:31:38
【问题描述】:
我正在尝试在StringBuilder 中订购 5 个文本框,但结果总是随机出现。简而言之,我想要做的是安排一个 5 个文本框来生成相同的书面文本以与之比较我的数据库..
此文本在我的数据库中
11111 22222 33333 44444 55555
每次我运行我的应用程序时,顺序都会像这样变化。
55555 44444 11111 33333 22222
或
22222 11111 55555 44444 33333
每次更改时..比较都会出现错误“这是一个假键”
这是我的 5 个文本框
Box1.Text
Box2.Text
Box3.Text
Box4.Text
Box5.Text
这是我的字符串生成器代码
StringBuilder sb = new StringBuilder();
foreach (Control c in this.Controls)
{
if (c is TextBox)
{
sb.Append(c.Text);
}
}
Activation.activateSoftware(sb.ToString());
我在这里错过了什么..
¤已解决¤
感谢大家的回复。但是话题已经关闭了??我不知道为什么..但是重要的问题已经解决了..我想分享解决方案。
我遇到的问题是 Windows 窗体上的 Tab 键顺序,所以我修改了 Visual Studio 中的文本框的顺序,在 查看菜单 上,Tab 键顺序。
问题已经解决.. 再次感谢大家
【问题讨论】:
-
您是说 foreach 循环中的控件顺序在每次运行时都不同吗?如果是这样的话,那是非常不寻常的。你可能只是错过了 5 个数字组之间的空格吗?
-
所以我不会依赖
this.Controls中的列表总是以相同的顺序出现;例如,使用动态表单。由于“只有”五个文本框,我会按照 T.S. 的建议将它们连接起来而不使用循环,并且为了安全起见,我会使用 Trim() 来确保没有不需要的字符滑入。跨度> -
看起来您可能正在尝试为用户提供五个单独的
TextBox输入数据控件,这些控件将被组合以验证键值——例如“用户访问键”。如果这是您想要的并且您正在使用 WinForms,那么您可以查看MaskedTextBox。这里是Docs
标签: c# string methods controls stringbuilder