【问题标题】:Select several textboxes in a panel在面板中选择多个文本框
【发布时间】:2019-09-24 07:10:46
【问题描述】:

我有几个文本框嵌套在一个面板中,我想检查它们是否有文本。虽然我不想这样写我的代码:

if(textbox1.Text != "" && textbox2.Text != "" ...) 
{
    ...
}

有没有什么办法可以自动完成并提高代码本身的总体质量?

【问题讨论】:

    标签: c# winforms textbox panel


    【解决方案1】:

    这可以通过使用来自System.LinqOfTypeAll 扩展方法非常容易地完成。

    var panel = new Panel
    {
        Size = new Size(500, 500),
        BackColor = Color.Red
    };
    
    panel.Controls.Add(new TextBox { Text = "Value" });
    panel.Controls.Add(new TextBox { Text = "Value2" });
    
    if (panel.Controls.OfType<TextBox>().All(x => !string.IsNullOrEmpty(x.Text)))
    {
        //Do something
    }
    

    if 语句中的代码只有在 TextBoxes 的所有 Text 属性不为空时才会执行。

    【讨论】:

      【解决方案2】:

      您可以使用 Linq 扩展方法获取属性 Text 不为空的 Panel 的所有文本框:

      using System.Linq;
      
      var textboxes = panel.Controls.OfType<TextBox>().Where(c => c.Text != "");
      
      foreach ( TextBox textbox in textboxes )
      {
        // ...
      }
      

      如果你想检查它们是否都是非空的,使用这个:

      if ( panel.Controls.OfType<TextBox>().All(c => c.Text != "") )
      {
        // ...
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-02
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 2011-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多