【问题标题】:C# Button bind to textboxC# 按钮绑定到文本框
【发布时间】:2016-09-09 01:46:00
【问题描述】:

我正在尝试实现一个删除textbox 中的文本的按钮。但是,这里的问题是我将有多个 textbox 有多个 button 分别删除文本。我尝试了一种奇怪的方法,方法是使用 switch 案例来获取 button 名称来处理不同的 textbox,如下所示:

switch(btn.Name)
{
    case "button1": textbox1.Clear();
        break;
    case "button2": textbox2.Clear();
        break;
}

虽然这解决了问题,但我发现这在设计方面确实不可靠且不实用。所以我想问一下是否有更好的方法来做到这一点?谢谢!

【问题讨论】:

  • 您可以保存所有控件名称,以便以后找到它们。看到这个帖子stackoverflow.com/questions/3898588/…
  • 嗨 Stitch 博士,感谢您的回答,但我正在尝试寻找更好的设计,例如将按钮绑定到文本框的方法,这样我就不需要像这样切换案例。
  • 控件有一个称为对象类型的标记的属性。您可以将每个 Button 的 Tag 属性设置为应该清除的 TextBox
  • 你的逻辑是否总是 1:1 = 1 Button 对应 1 TextBoxButton 是否需要清除不同的 TextBox
  • 如果它是一对一的,即 Button1 = textbox1 那么你可以使用控件集合: ((TextBox)Controls["textbox" + btn.Name.Replace("button", "") ]).Clear()

标签: c# forms button text


【解决方案1】:

如果它是一对一的使用控件集合,它真的应该像提取数字部分一样简单。然后,您可以将所有按钮分配给单击事件,而无需 x 数量的事件处理程序。所有按钮的一次 Click 事件处理程序......

private void allButtons_Click(object sender, EventArgs e)
{
    try
    {
        Button btn = sender as Button;
        ((TextBox)Controls["textbox" + btn.Name.Replace("button", "")]).Clear();
    }
    catch (Exception ex)
    {
        //do something with the error
    }
}

【讨论】:

    【解决方案2】:

    你可以像这样扩展 Button 类

    public partial class ButtonHasList : Button
    {
        public List<Textbox> List { get; set ;  }
        public  ButtonHasList() 
        {
             List = new     List<Textbox> ();
             this.Click += CleanTextOfList;
        }
        private void  CleanTextOfList ( object sender,EventArgs e)
       {
              foreach ( var item in List)
              {
                       item.Text = "";
               }
    
        }  
    }
    

    将要清除其文本的文本框添加到 ListOfTextbox 并且它们的文本将是干净的

    【讨论】:

      【解决方案3】:

      如果你的逻辑是 1:1;您可以为每个按钮使用按钮单击事件,并放置您要清除的特定文本框。如果你的逻辑不是 1:1;请在您的问题中更具体。

      private void button1_Click(object sender, EventArgs e)
      {
          textBox1.Clear();
      }
      

      【讨论】:

        猜你喜欢
        • 2017-07-30
        • 1970-01-01
        • 2021-12-18
        • 2011-02-21
        • 2018-04-14
        • 2010-12-18
        • 1970-01-01
        • 2015-12-30
        • 2010-12-02
        相关资源
        最近更新 更多