将文本框放入数组中

Posted

技术标签:

【中文标题】将文本框放入数组中【英文标题】:Put textboxes in an array 【发布时间】:2021-11-30 05:28:34 【问题描述】:

我有大约 80 个文本框,我将它们命名为

s1v1, s1v2, ..... s12v7. 

但我想将它们放在一个数组中或列出它们,以便我可以在 for 循环中轻松使用它们。我使用下面的数组,但我相信有一种更简单的方法可以做到这一点。你能告诉我解决它的最佳方法是什么吗?

TextBox[,] girdiler = new TextBox[,] 
   s1v1, s1v2, s1v3, s1v4, s1v5, s1v6, s1v7 , 
   s2v1, s2v2, s2v3, s2v4, s2v5, s2v6, s2v7 , 
   s3v1, s3v2, s3v3, s3v4, s3v5, s3v6, s3v7 ,
   s4v1, s4v2, s4v3, s4v4, s4v5, s4v6, s4v7 , 
   s5v1, s5v2, s5v3, s5v4, s5v5, s5v6, s5v7 , 
   s6v1, s6v2, s6v3, s6v4, s6v5, s6v6, s6v7 ,
   s7v1, s7v2, s7v3, s7v4, s7v5, s7v6, s7v7 , 
   s8v1, s8v2, s8v3, s8v4, s8v5, s8v6, s8v7 , 
   s9v1, s9v2, s9v3, s9v4, s9v5, s9v6, s9v7 ,
   s10v1, s10v2, s10v3, s10v4, s10v5, s10v6, s10v7 , 
   s11v1, s11v2, s11v3, s11v4, s11v5, s11v6, s11v7 , 
   s12v1, s12v2, s12v3, s12v4, s12v5, s12v6, s12v7  
;

如你所见,它太长了,我想让它更容易。

【问题讨论】:

请指定 UI:它是 WinFormsWPF 还是别的什么? “我有大约 80 个文本框” 听起来像是一个有问题的设计...无论如何,您可以遍历 Controls 属性以将它们放入您的数组中。 它是一个窗体应用程序 你能写一个例子吗? @约翰尼莫普 最简单的方法是动态创建它们并将它们收集在 List 中,或者更好的是放入 Dictionary 以包含名称.. 【参考方案1】:

您可以在 Linq 的帮助下查询Controls,以便将所有TextBoxes 组织成一个集合: p>

using System.Linq;

... 

var boxes = Controls
  .OfType<TextBox>()
  .Where(box => !string.IsNullOrEmpty(box.Name)) // to be on the safe side
  .ToDictionary(box => box.Name, box => box);

TextBox[,] girdiler = new TextBox[12, 7];

for (int s = 1; s <= girdiler.GetLength(0); ++s)
  for (int v = 1; v <= girdiler.GetLength(0); ++v) 
    girdiler[s - 1, v - 1] = boxes[$"ssvv"];   

【讨论】:

ToDictionary(box => box.Name,** box**) 名称 'box' 在当前上下文中不存在,为什么会这样说?抱歉,我是编程新手 @ZEYN:很抱歉错别字,我已经编辑了代码 很抱歉再次打扰,但我在运行时遇到了这个问题,您知道原因吗?此异常最初是在此调用堆栈中引发的: [External Code] Hmi.tools.frmTestInput.X(System.Windows.Forms.TextBox[,]) in frmTestInput.cs Hmi.tools.frmTestInput.openFileBTN_Click(object, System.EventArgs ) 在 frmTestInput.cs [外部代码] Program.cs 中的 Hmi.Program.Main() @ZEYN:请提供异常消息(即发生了什么)和相关代码openFileBTN_Click 做了什么)。也许你应该打开另一个问题(带有代码和异常消息)

以上是关于将文本框放入数组中的主要内容,如果未能解决你的问题,请参考以下文章

WPF 从列表框中拖动项目并放入文本框中

如何创建边界框并将文本放入其中?

如何基于文本框创建数组表?

PHP:将 HTML 生成为纯文本并放入文本框问题

将 IME 放入自定义文本框中,从 Control 派生

拆分值并将其放入 AS3 中的文本框中