【问题标题】:c# faster way to read all textboxes/labels [closed]c#读取所有文本框/标签的更快方法[关闭]
【发布时间】:2015-01-01 22:50:58
【问题描述】:

我有一个包含九组按钮和标签的表单。按钮的单击功能会更新标签中的数字。最后,我将标签值保存到文件中。标签具有 eLabel1、eLabel2、eLabel3 之类的名称。我使用 for 循环包裹在 switch(case) 周围来选择和保存标签。 我的问题是,开关箱的代码行数是否更少?我在想一个像 "e"+i 这样的字符串来调用标签。我知道没有 .GetByName() 但还有其他东西可以使用吗?喜欢 .FromHandle()?

这是简短的版本。 我有九个标签 eLabel1、eLabel2、eLabel3..

public void save()
{
  for (int i = 0; i < 9; i++)
  {
       string[] posstrings=switchpos(i+1);

       //string manipulation stuff
  }
}

    private string[] switchpos(int i)
    {

        string e;
        string[] posstrings;
        switch (i)
        {
            case 1:
                e = eLabel1.Text;
                break;
             case 2:
             //and so on
        }

        posstrings = new string[11] { e, m, l, s, b, pfc, pfr, pf3, cf, ct, cr};
        return posstrings;
    }

我想知道是否有其他方法可以进行切换。

【问题讨论】:

  • 这是很多没有代码的谈话。我们是程序员,我们喜欢阅读 CODE。
  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅“如何提问”页面以获得澄清此问题的帮助。
  • 我知道没有 .GetByName() -> this.Controls.Find("name")
  • 试过 this.Controls.Find() 但返回的数组为空

标签: c# forms labels


【解决方案1】:

您可以使用对标签的引用创建一个数组:

Label[] labels = { eLabel1, eLabel2, eLabel3, ... };

使用标签中的文本生成一个数组将是单行的:

string[] values = labels.Select(l => l.Text).ToArray();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    相关资源
    最近更新 更多