-3

Form2 を開く Form 1 があります。Form2 ですべての textBox を読み取り専用にする方法を教えてください。

フォーム 1:

Form2 f2 = new Form2();
f2.ReadOnly();
f2.ShowDialog();

フォーム 2:

public void ReadOnyTextBoxes(Control parent)
{
    foreach (Control c in parent.Controls)
    {
        if (c.GetType() == typeof(TextBox))
        {
            ((TextBox)(c)).ReadOnly = true;
        }
    }
}

public void ReadOnly()
{
     ReadOnyTextBoxes(groupBox1);
}
4

2 に答える 2

2

groupbox1 には、他のグループボックスまたはいくつかのコンテナーが存在する可能性があります。再帰が必要です。 ボタンを除くフォーム上のすべてのコントロールを無効にする方法は?

于 2013-07-27T19:30:17.807 に答える
1

あなたのアイデアを使って、すべてのTextBoxes で機能させるために、次のような再帰関数でこれを行うことができます。

public void MakeReadOnlyTextBoxes(Control parent)
{
    foreach (Control c in parent.Controls)
    {
        if (c.GetType() == typeof(TextBox))
        {
            ((TextBox)(c)).ReadOnly = true;
        }
        else if(c.Controls.Count > 0)
        {
            MakeReadOnlyTextBoxes(c);
        }
    }
}

public void ReadOnly()
{
     ReadOnyTextBoxes(this);
}

編集済み:c再帰呼び出しで変数を使用する必要があります

于 2013-07-27T19:29:37.673 に答える