【问题标题】:how to use for loop to check if the textbox is null or not in c# windows form application ,using array [duplicate]如何使用for循环检查文本框是否在c#windows窗体应用程序中为空,使用数组[重复]
【发布时间】:2018-10-02 14:17:28
【问题描述】:

我使用文本框名称为 text_box_1,text_box_2,text_box_3,text_box_4 我需要一一检查这些文本框,如果它们为空,则文本框应该隐藏, 这是我的代码,我试图声明一个变量文本框名称来执行此操作,但它不起作用,所以你能帮我解决这个问题吗

int i;
private void check()
{
    for(i = 0; i < 4; i++)
    {
        if((text_box_+i).Text == "")
        {
            (Text_box_+i.Hide();
        }
    }
}

感谢@Oztaco 我解决了它, 这就是我想要的方式 非常感谢@Oztaco...

    private void check()
    {
        TextBox[] textBoxes = new TextBox[10];
        textBoxes[0] = a;
        textBoxes[1] = b;
        textBoxes[2] = c;
        textBoxes[3] = d;

        int i;
            for (i = 0; i < 4; i++)
            {
                if(textBoxes[i].Text == "")
                {
                textBoxes[i].Hide();
                }
            }
    }

【问题讨论】:

  • 您应该使用your_form.Controls.OfType&lt;TextBox&gt; 并循环返回控件!
  • 您不能使用此语法动态地与不同的类实例对话。您可以使用反射,但这走错了路。您可以创建一个 List 并在其中添加您的文本框并将它们动态添加到视图中。从这里开始,您可以遍历列表。
  • 这被问了一千次。搜索:winforms 按名称查找控件并投票赞成问题和答案
  • @Tim Schemelter 我的意思是如果文本框文本为空文本框应该隐藏就是它
  • @KãvîñdūTîssêrã:您可能想使用String.IsNullOrEmptyString.IsNullOrWhiteSpace(多个空格仍为空)。

标签: c#


【解决方案1】:

可能有一种方法可以做类似于text_box_ + i 的事情,但你不想这样做,它不是干净的代码(解释如下)。

如果你想做类似的事情,你应该做的是声明一个文本框数组并循环遍历数组。

类似:

TextBox[] textBoxes = new TextBox[10];

然后当你创建一个新的文本框时,你会这样做:

textBoxes[0] = new TextBox();

并访问特定的文本框:

textBoxes[i]; // You can loop this

这是一种简洁的方法,因为如果您有一个数组,编译器就会知道您要做什么(循环遍历数组)。如果 C# 具有执行您所描述的功能,它将使程序更难预测,因为编译器将不知道您将通过连接这两个语句来尝试访问什么。

【讨论】:

  • 谢谢你,这将完成工作
  • 你能告诉我根据你的想法应该如何编写代码
  • private void check() { TextBox[] textBoxes = new TextBox[10];文本框[0] = a;文本框[1] = b;文本框[2] = c;文本框[3] = d;诠释我; for (i = 0; i
【解决方案2】:

如果您打算在表单中放置Check,那么您可以这样定义:

private void Check()
{
    foreach (var tb in this.Controls.OfType<TextBox>())
    {
        if (String.IsNullOrEmpty(tb.Text)) tb.Hide();
        else tb.Show();
    }
}

this.Controls 包含表单中的所有控件;调用 OfType&lt;TextBox&gt;() 你只会得到 TextBox 类型的控件,所以你的表单中的所有文本框。

【讨论】:

    【解决方案3】:

    这是目前的一种解决方案,使用OfType&lt;T&gt; 获取所有文本框在你的winform中

    您不需要将 TextBox 的 Name 设置为指定格式,只需.. 任何您想要的。

    //This Gets all textboxes, in your window actually named: form;
    
    //List<TextBox> should also work!
    IEnumerable<TextBox> textBoxes = this.Controls.OfType<TextBox>(); 
    
    foreach (TextBox textBox in textBoxes)
    {
        if(string.IsNullOrEmpty(textBox.Text)
        {
             //DO SOMETHING IF IT's NULL (or just "")
        }
        else
        {
             //DO SOMETHING ELSE...
        }
    }
    

    【讨论】:

    • 更好的方法here
    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2011-08-24
    • 2020-01-02
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    相关资源
    最近更新 更多