检查每个TextBox中的字母

时间:2015-08-29 22:23:35

标签: c# winforms

假设我有5个这样的TextBox:

textBox_Box1
textBox_Box2
textBox_Box3
textBox_Box4
textBox_Box5

我有一个函数检查TextBox是否只包含字母,如下所示:

public static bool OnlyLetters(string s)
{
    foreach (char c in s)
    {
        if (!Char.IsLetter(c))
            return false;
    }
    return true;
}

使用此功能检查每个textBox是否有效?我不想用这种方式写它:

OnlyLetters(textBox_Box1.Text);
OnlyLetters(textBox_Box2.Text);
OnlyLetters(textBox_Box3.Text);
OnlyLetters(textBox_Box4.Text);
OnlyLetters(textBox_Box5.Text);

我更愿意在循环中检查它,但我不知道如何在那时实现它。

3 个答案:

答案 0 :(得分:3)

您可以创建TextBox的数组:

private TextBox[] textBoxes = {
    textBox_Box1,
    textBox_Box2,
    textBox_Box3,
    textBox_Box4,
    textBox_Box5
};

然后你可以循环访问它:

foreach (TextBox txt in textBoxes)
{
    if (!OnlyLetters(txt.Text))
    {
        // Do something
    }
}

答案 1 :(得分:0)

你说你想在“循环”中查看它。我不知道您正在使用哪种GUI框架,因此类型可能有误,但您可以执行以下操作:

List<TextBox> textBoxes = new List<TextBox>();

// Add all your textBoxes to the list here

然后,只要您想检查其内容,就在textBoxes列表中使用循环。如果它是移动平台,您应该可以看到是否可以限制所显示的键盘类型,并且在iOS上,您可以自动将UI组件添加到列表中,这样您就不必手动编写代码。希望这有点帮助!

答案 2 :(得分:0)

一种方法是将所有文本框放在某种容器中,然后遍历容器的子项(将是文本框)并对每个文本框执行检查。这样,您可以根据需要在容器中添加和删除文本框,而无需修改代码。

当您在文本框容器中循环时,检查您所在的孩子是否实际上是一个文本框,然后在其上执行强制转换,以便您可以访问它的文本属性。

我不知道您使用的是哪个框架,因此我无法提供代码示例。