0

我正在尝试遍历窗口中的文本框,以便对它们进行操作。这是我的代码:

foreach (Control c in Controls)
{
    if (c is System.Windows.Forms.TextBox)
    {
        MessageBox.Show(c.Name);
    }
}

我在 的行上放了一个断点if,我的程序到达了那个断点,但它没有到达该MessageBox行...错误在哪里?(我对此进行了测试c is Button并且它有效......)

4

2 回答 2

3

这非常简单,我不想添加答案,但是对于 OP 的要求:

private void CheckTextBoxesName(Control root){
    foreach(Control c in root.Controls){
        if(c is TextBox) MessageBox.Show(c.Name);
        CheckTextBoxesName(c);
    }
}
//in your form scope call this:
CheckTextBoxesName(this);
//out of your form scope:
CheckTextBoxesName(yourForm);
//Note that, if your form has a TabControl, it's a little particular to add more code, otherwise, it's almost OK with the code above.
于 2013-08-04T15:37:35.080 回答
1

这应该可以帮助你

    foreach (TextBox t in this.Controls.OfType<TextBox>())
    {
         MessageBox.Show(t.Name);
    }

选择 :

void TextBoxesName(Control parent)
{
    foreach (Control child in parent.Controls)
    {
        TextBox textBox = child as TextBox;
        if (textBox == null)
            ClearTextBoxes(child);
        else
            MessageBox.Show(textbox.Name);
    }
}

    TextBoxesName(this);
于 2013-08-04T15:30:22.730 回答