2016-05-13 14 views
1

textboxのテキストを削除するボタンを実装しようとしています。しかし、ここでは、textboxに複数のテキストをそれぞれ削除する複数のbuttonがあることになります。この問題を解決するがC#ボタンがテキストボックスにバインド

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

を、私は本当に堅牢これをない見つけていない:私は、以下のようなさまざまなtextboxに対処するbutton名を取得しますswitchケースを持っていることによって、これに奇妙なアプローチを試してみましたデザイン面では実用的です。だから私はもっと良い方法でこれを行うためにとにかくあるかどうか尋ねたいと思いますか?ありがとうございました!

+0

すべてのコントロール名を保存して後で見つけることができます。この投稿を参照してくださいhttp://stackoverflow.com/questions/3898588/find-control-by-name-from-windows-forms-controls –

+0

こんにちはスティッチ、答えてくれてありがとう、私はおそらくボタンをテキストボックスにバインドする方法などのより優れたデザインで、このようなスイッチケースを用意する必要はありません。 – Pow4Pow5

+0

コントロールには、オブジェクト型のタグというプロパティがあります。クリアするはずのTextBoxに各ButtonのTagプロパティを設定することができます –

答えて

0

ロジックが1:1の場合は、各ボタンのボタンクリックイベントを使用して、消去したい特定のテキストボックスを置くだけです。あなたのロジックが1:1でない場合、あなたの質問にもっと具体的にしてください。

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

あなたはListOfTextboxに自分のテキストをクリアすると、それらのテキストは

0

きれいになり、それは本当にのように単純でなければならないことTextboxsを追加し、この

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 = ""; 
      } 

    } 
} 

ようButtonクラスを拡張することができますcontrolsコレクションを使用して1対1であれば数字部分を抽出します。次に、x個のイベントハンドラを必要とせずにすべてのボタンをclickイベントに割り当てることができます。すべてのボタンの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 
    } 
} 
関連する問題