我的Windows窗体应用程序中有GroupBox
控件,其中我放置了一些TextBox
控件。如何在将单个GroupBox
控件设置为只读时禁用TextBox
控件?
每当我禁用GroupBox
时,其中的所有TextBox
控件都会被禁用。我无法弄清楚如何让它们成为只读。
答案 0 :(得分:11)
当您禁用容器控件(例如GroupBox
)时,其所有子项也将被禁用。这就是它在Windows中的运作方式;不可能改变这种行为。
相反,您需要将每个TextBox
控件的ReadOnly
property设置为true。如果您禁用整个GroupBox
,则其中包含的每个TextBox
控件也将被禁用,这将覆盖ReadOnly
属性的状态并阻止用户复制其内容。
修复了禁用GroupBox
的代码部分后,您可以使用简单的foreach
循环来完成在每个TextBox
控件上设置属性的繁琐工作:
foreach (TextBox txt in myGroupBox.Controls)
{
txt.ReadOnly = true;
}
答案 1 :(得分:3)
这将使组框中的所有文本框都只读。
foreach(TextBox t in groupBox1.Controls)
{
t.ReadOnly = true;
}
答案 2 :(得分:2)
实际上,如果将groupbox的 Enabled 属性设置为false。其中的所有内容(文本框等)也将被禁用。但你仍然可以使用:
foreach (Control ctrl in groupBox1.Controls)
{
if (ctrl is TextBox)
{
((TextBox)ctrl).ReadOnly = true;
}
}
答案 3 :(得分:0)
我认为你在这里的意思是你想要禁用组合框并同时 - 不希望文本框显示为灰色...如果这是你想要实现的,你最好把这些在Panel中的文本框,然后像对任何控件一样设置ReadOnly。