C#按钮绑定到文本框

C#按钮绑定到文本框,c#,forms,button,text,C#,Forms,Button,Text,我正在尝试实现一个按钮,用于删除文本框中的文本。然而,这里的问题是,我将有多个textbox,其中有多个按钮,分别删除文本。我尝试了一种奇怪的方法,使用了一个开关案例,让按钮名称处理不同的文本框,如下所示: switch(btn.Name) { case "button1": textbox1.Clear(); break; case "button2": textbox2.Clear(); break; } 虽然这解决了问题,但我发现这在设计方

我正在尝试实现一个按钮,用于删除
文本框中的文本。然而,这里的问题是,我将有多个
textbox
,其中有多个
按钮
,分别删除文本。我尝试了一种奇怪的方法,使用了一个
开关
案例,让
按钮
名称处理不同的
文本框
,如下所示:

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

虽然这解决了问题,但我发现这在设计方面确实不够健壮和实用。因此,我想问,是否有任何方法可以更好地做到这一点?谢谢大家!

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

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

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

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

您可以像这样扩展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 = "";
           }

    }  
}
公共部分类按钮列表:按钮
{
公共列表{get;set;}
公共按钮列表()
{
列表=新列表();
点击+=CleanTextOfList;
}
私有void CleanTextOfList(对象发送方,事件参数e)
{
foreach(列表中的变量项)
{
项目.文本=”;
}
}  
}

将要清除文本的文本框添加到ListOfTextbox中,它们的文本将是干净的

您可以像这样扩展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 = "";
           }

    }  
}
公共部分类按钮列表:按钮
{
公共列表{get;set;}
公共按钮列表()
{
列表=新列表();
点击+=CleanTextOfList;
}
私有void CleanTextOfList(对象发送方,事件参数e)
{
foreach(列表中的变量项)
{
项目.文本=”;
}
}  
}

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

如果使用控件集合提取数字部分是一对一,则实际上应该与提取数字部分一样简单。然后,您可以将所有按钮分配给click事件,而不需要x数量的事件处理程序。单击所有按钮的事件处理程序后

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
    }
}

如果使用控件集合是一对一的,那么它实际上应该和提取数字部分一样简单。然后,您可以将所有按钮分配给click事件,而不需要x数量的事件处理程序。单击所有按钮的事件处理程序后

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
    }
}

您可以保存所有控件名,稍后再查找它们。看到这篇文章嘿Stitch博士,谢谢你的回答,但我正在尝试寻找一种更好的设计,比如将按钮绑定到文本框的方法,这样我就不需要这样的开关盒。控件有一个名为Tag of type Object的属性。您可以将每个按钮的标记属性设置为它应该清除的文本框。对于1
TextBox
,您的逻辑是否始终是1:1=1
按钮?
按钮
是否需要清除不同的
文本框
?如果它是一对一ie按钮1=textbox1,那么您可以使用控件集合:((TextBox)控件[“TextBox”+btn.Name.Replace(“Button”,“”)]。清除()您可以保存所有控件名称并在以后查找它们。看到这篇文章嘿Stitch博士,谢谢你的回答,但我正在尝试寻找一种更好的设计,比如将按钮绑定到文本框的方法,这样我就不需要这样的开关盒。控件有一个名为Tag of type Object的属性。您可以将每个按钮的标记属性设置为它应该清除的文本框。对于1
TextBox
,您的逻辑是否始终是1:1=1
按钮?
按钮
是否需要清除不同的
文本框
?如果是一对一ie按钮1=textbox1,则可以使用控件集合:((TextBox)controls[“TextBox”+btn.Name.Replace(“Button”,“”)]。clear()