在C#Winforms中,当用户第一次加载表单时,我通过单击该标签将输入作为标签“文本”输入到数据库中。再次如果另一个用户加载该表单,我希望禁用该标签。我怎么能做到这一点?这是形式的样品找到包含“所需文本”的标签
这是我尝试:
- 如果用户点击了多个标签,我得到的输入字符串为“E10,E9,E8,E7等,“
当另一个用户加载的形式,我检索字符串,并通过分割 说”,”并保存它阵列
的,但我不知道如何使拉bel从数组中禁用。请帮助。
在C#Winforms中,当用户第一次加载表单时,我通过单击该标签将输入作为标签“文本”输入到数据库中。再次如果另一个用户加载该表单,我希望禁用该标签。我怎么能做到这一点?这是形式的样品找到包含“所需文本”的标签
这是我尝试:
当另一个用户加载的形式,我检索字符串,并通过分割 说”,”并保存它阵列
的,但我不知道如何使拉bel从数组中禁用。请帮助。
* 强大的文本 * 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;
}
}
它显示错误,无法将类型'system.windows.form.control []'转换为'系统.windows.form.label”。它的意思是????我该怎么办?该标签的名称与输入字符串不同:( –
可能需要一个索引,因为它返回一个数组,将其更改为((Label)matches [0]) – tam
感谢您的帮助,但现在例外情况是'Index as在数组边界之外'。我将strarray声明为“string [] strarray = retr_seats_upper.Split(comma);” –
您尝试的方法听起来很合理。为什么它不起作用? –
你能告诉我如何找到包含“所需文本”的标签吗? –
好的,我已经用我目前在VS2010中工作的代码编辑了我的答案。请确认它在欧洲足球决赛(西班牙VS意大利)开始前有效;)我不会在这里:D – Jonathan