2016-10-11 69 views
0

嗨我想完成的是 当我将控件的visible属性更改为false时,我也想将enabled属性更改为false。反之亦然。将控件设置为启用false如果它们不可见

的情景(假设我们有一个文本框和复选框此: 如果复选框被选中文本框是可见的并启用 其他 文本框是不可见的,而不是启用

我可以通过事件做到这一点但它太多的代码重复有多个控件时..

+0

启动时通过控件循环,并将相同的VisibilityChanged钩子添加到每个控件,该控件的启用设置为false或true。 –

回答

1

你可以处理控件的VisibleChanged-event

void Controls_VisibleChanged(object sender, EventArgs e) 
{ 
    Control c = (Control) sender; 
    c.Enabled = c.Visible; 
} 

您CA对所有控件使用相同的事件处理程序。例如在构造函数中:

foreach (Control c in this.Controls) 
    c.VisibleChanged += new EventHandler(this.Controls_VisibleChanged); 
0

我无法理解你的问题,但我会写一些可能有所帮助的东西。

你的复选框,双击并编辑CheckedChanged事件和编写代码:

if (!<CheckBoxName>.Checked) 
{ 
    <TextBoxName>.Enabled = false; 
    <TextBoxName>.Hide(); 
} 
else 
{ 
    <TextBoxName>.Enabled = true; 
    <TextBoxName>.Show(); 
} 

注:
<CheckBoxName> =您的复选框的名字
<TextBoxName> =您的文本框的名字

更改复选框。检查属性并将其更改为true以使代码平稳运行。

我希望能够帮助你...

相关问题