【问题标题】:Store textbox values in an array in c#在 C# 中将文本框值存储在数组中
【发布时间】:2013-05-23 07:11:41
【问题描述】:

我有一个包含 10 个文本框和确定按钮的表单。 单击确定按钮时。我需要将文本框中的值存储到一个数组字符串中。

有人可以帮帮我吗?

【问题讨论】:

  • 你有什么尝试吗?请阅读FAQHow to Ask
  • 你能显示一些代码吗?你知道如何从文本框中读取数据,你知道如何将数据存储在数组中吗?
  • 字符串[] 列表 = 新列表[9];列表[0] = textbox1.Text;

标签: c# arrays


【解决方案1】:

我需要将文本框中的值存储到一个数组字符串中。

string[] array = this.Controls.OfType<TextBox>()
                              .Select(r=> r.Text)
                              .ToArray();

上面期望文本框直接在Form上,而不是在容器内,如果它们在多个容器内,那么你应该get all the controls recursively

确保包含using System.Linq;

如果您使用的框架低于 .Net Framework 3.5。然后你可以使用一个简单的 foreach 循环,比如:

List<string> list = new List<string>();
foreach(Control c in this.Controls)
{
  if(c is TextBox)
     list.Add((c as TextBox).Text);
}

(这适用于 .Net framework 2.0 及更高版本)

【讨论】:

  • 聪明!我的替代解决方案是在代码中手动创建文本框,而不是使用设计器,然后剩下的就很简单了。
  • Habib,我遇到此错误“System.Windows.Forms.Control.ControlCollection”不包含“OfType”的定义
  • @QKWS,确保在顶部包含using System.Linq;
  • @Habib 我可以知道 System.Linq 的程序集参考吗?我遇到此错误:名称空间“系统”中不存在类型或名称空间名称“Linq”(您是否缺少程序集引用?)
  • @QKWS,你用的是什么.Net框架,从.Net 3.5开始就支持了。
【解决方案2】:

获取所有文本框,而不仅仅是表单的直接子项 (this)

Func<Control, IEnumerable<Control>> allControls = null;
allControls = c => new Control[] { c }.Concat(c.Controls.Cast<Control>().SelectMany(x => allControls(x)));

var all = allControls(this).OfType<TextBox>()
            .Select(t => t.Text)
            .ToList();

【讨论】:

    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 2012-10-23
    • 2017-09-19
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多