2012-07-01 38 views
0

在C#Winforms中,当用户第一次加载表单时,我通过单击该标签将输入作为标签“文本”输入到数据库中。再次如果另一个用户加载该表单,我希望禁用该标签。我怎么能做到这一点?这是形式的样品找到包含“所需文本”的标签

enter image description here

这是我尝试:

  • 如果用户点击了多个标签,我得到的输入字符串为“E10,E9,E8,E7等,“
  • 当另一个用户加载的形式,我检索字符串,并通过分割 说”,”并保存它阵列

    的,但我不知道如何使拉bel从数组中禁用。请帮助。

+0

您尝试的方法听起来很合理。为什么它不起作用? –

+0

你能告诉我如何找到包含“所需文本”的标签吗? –

+0

好的,我已经用我目前在VS2010中工作的代码编辑了我的答案。请确认它在欧洲足球决赛(西班牙VS意大利)开始前有效;)我不会在这里:D – Jonathan

回答

1

* 强大的文本 * 1 .-做一个循环您的阵列
2:查找使用的标签名称标签(我supossed该标签的名称是相同的您在阵列中有开关输入字符串)
3.-禁用控制

foreach (string name in yourArray) 
{ 
    var matches = this.Controls.Find(name , true); 
    ((Label) matches).Enable = False 
} 

我没有编译器现在在这里,我希望它运行。请理解,如果没有。

编辑:查找他的文本属性标签:

foreach(Control c in this.Controls) 
{ 
    if(c is Label) 
    { 
     if((Label) c).Text == "RequiredText") 
     { 
      // Do stuff here ; 
     } 
    } 
} 

请注意,如果标签是面板,组框,或任何内容控制里面,你会不得不UDO contentControl.Controls代替使用'this'。

编辑2:好的,这段代码适用于我。我有一个带有“Sample”文本的标签。

var myarray = "E1,E2,Sample".Split(','); 

    foreach (Control labelcontrol in this.Controls) 
    { 
     if (!(labelcontrol is Label)) continue; 
     foreach (var text in myarray) 
     { 
      if (labelcontrol.Text == text) 
       labelcontrol.Enabled = false; 
     } 
    } 
+0

它显示错误,无法将类型'system.windows.form.control []'转换为'系统.windows.form.label”。它的意思是????我该怎么办?该标签的名称与输入字符串不同:( –

+0

可能需要一个索引,因为它返回一个数组,将其更改为((Label)matches [0]) – tam

+0

感谢您的帮助,但现在例外情况是'Index as在数组边界之外'。我将strarray声明为“string [] strarray = retr_seats_upper.Split(comma);” –

相关问题