【问题标题】:How to get multi textbox as input parameter of a Method in WPF C#如何在 WPF C# 中获取多文本框作为方法的输入参数
【发布时间】:2021-10-01 03:06:35
【问题描述】:

我正在使用 WPF C# Visual Studio

我的公共课程中有一个方法。 我想在方法的参数输入中获取许多文本框。 该方法将在第一个长度文本框中删除零,如下所示:0123 => 123

这是我的方法:

public static void Remove_Zero_atFirst(TextBox TXB2)
{
    TXB2.Text = TXB2.Text.TrimStart('0').Trim();
}

当我想使用该方法时,我需要的是这样的:

Remove_Zero_atFirst(textbox1,textbox2,textbox3, . . .);

我尝试了什么:

public static class Texchanger
{
     public static void Del_Multi_SepTexs(IEnumerable<TextBox> TXBS)
     {
         TXBS.Text = TXBS.Text.TrimStart('0').Trim();
     }
}

我尝试的那一行有错误:

does not contain a definition for 'Text' and no accessible extension method 'Text' accepting a first argument of type 'IEnumerable<TextBox>' could be found

【问题讨论】:

    标签: c# wpf visual-studio xaml


    【解决方案1】:

    您需要传入一个数组,或者通过指定为最后一个参数来使用可变参数

    params TextBox[] 框

    然后在里面.. foreach(TextBox tb in box) { }

    【讨论】:

      【解决方案2】:

      这正是params keyword 的用途。

      Remove_Zero_atFirst(textbox1,textbox2,textbox3, . . .);
      
      public void Remove_Zero_atFirst(params TextBox[] textboxes)
      {
          foreach (TextBox item in textboxes)
          {
              item.Text = item.Text.TrimStart('0').Trim();
          }
      }
      

      【讨论】:

        【解决方案3】:

        试试这个:

               public static class Texchanger
                {
                    public static void Del_Multi_SepTexs(IEnumerable<TextBox> TXBS)
                    {
                        foreach (var item in TXBS)
                        {
                            item.Text = item.Text.TrimStart('0').Trim();
        
                        }
        
                    }
        
                }
        

        调用这个方法使用:

        var myTextBoxes = new List<TextBox>(){txt1,txt2}; Texchanger.Del_Multi_SepratTexs(myTextBoxes); 
        

        或者像这样使用多个参数:

        ublic static class Texchanger
            {
                public static void Del_Multi_SepTexs(params TextBox[] TXBS)
                {
                    foreach (var item in TXBS)
                    {
                        item.Text = item.Text.TrimStart('0').Trim();
        
                    }
        
                }
        
            }
        

        调用方法使用如下:

        Texchanger.Del_Multi_SepTexs(txt1,txt2);
        

        【讨论】:

        • 我试过了,但我看到了这个错误:方法 'Del_Multi_SepratTexs' 没有重载需要 2 个参数
        • 我的尝试:Texchanger.Del_Multi_SepratTexs(txt1,txt2);
        • 这增加了必须声明IEnumerable 的复杂性,您可以使用params 关键字来克服它。我已经使用它添加了一个答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-29
        • 2018-11-13
        • 2011-10-19
        相关资源
        最近更新 更多