当TextBox控件位于禁用的GroupBox中时,如何使TextBox控件成为只读控件?

时间:2011-03-28 08:08:31

标签: c# .net winforms controls textbox

我的Windows窗体应用程序中有GroupBox控件,其中我放置了一些TextBox控件。如何在将单个GroupBox控件设置为只读时禁用TextBox控件?

每当我禁用GroupBox时,其中的所有TextBox控件都会被禁用。我无法弄清楚如何让它们成为只读。

4 个答案:

答案 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。