首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态调用控件

动态调用控件
EN

Stack Overflow用户
提问于 2011-04-06 00:59:43
回答 3查看 1.4K关注 0票数 0

假设我有30个控件,都是lbls,都叫做"lblA“,后面有一个数字。

我也有30个文本框,同样的东西-称为"txtB“,后面有一个数字。

我到底该如何组织这件事。

代码语言:javascript
复制
for (i = 1; i < this.controls.count;i++)
{
    if ("lblA"+i=null)
    {
        break;
    }
    string A = string A + ("lblA" + i).Text
    string B = string B + ("txtB" + i).Text
}

我尝试了一些不同的方法,比如用this.controlsi调用对象,但这并不完全是我想要的。我所做的是在运行时在窗体中添加了许多标签和文本框。我需要遍历表单才能获取所有内容。我把它写成一个带有很多if的for each,但我很好奇是否有一种动态的方式来实现它。

我已经在网上找了大约1-1:30个小时,但没有找到任何接近,感谢所有人的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-06 01:10:07

代码语言:javascript
复制
var labels = new Dictionary<int, string>();
for (i = 1; i < this.controls.count;i++)
{
    var label = FindControl("lblA" + i) as Label;
    if (label == null)
    {
        break;
    }
    labels.Add(i, label.Text);
}
票数 1
EN

Stack Overflow用户

发布于 2011-04-06 01:01:58

您要使用的是FindControl方法。

VB中的示例:

代码语言:javascript
复制
 Dim txtMileage As TextBox = CType(cphLeft.FindControl("txtMileage" & iControlCountDays.ToString()), TextBox)
票数 0
EN

Stack Overflow用户

发布于 2011-04-06 01:40:18

也许这能解决你想要的东西:

代码语言:javascript
复制
void GetSpecialControls() {
  const string TXT_B = "txtB";
  const string LBL_A = "lblA";
  List<TextBox> textBoxList = new List<TextBox>();
  List<Label> labelList = new List<Label>();
  foreach (Control ctrl in this.Controls) {
    Label lbl = ctrl as Label;
    if (lbl != null) {
      if (lbl.Text.IndexOf(LBL_A) == 0) {
        labelList.Add(lbl);
      }
    } else {
      TextBox txt = ctrl as TextBox;
      if (txt != null) {
        if (txt.Text.IndexOf(TXT_B) == 0) {
          textBoxList.Add(txt);
        }
      }
    }
  }
  Console.WriteLine("Found {0} TextBox Controls.", textBoxList.Count);
  Console.WriteLine("Found {0} Label Controls.", labelList.Count);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5555553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档