2016-04-02 9 views
0

私は単純な電卓を構築しています。私は3つのテキストボックスを持っています:textBox1(第1オペランド)、テキストボックス2(第2オペランド)、およびテキストボックス3(結果)。私は実行できる多数のオペランド関数を持っています。私はまた、他の機能と同様に、すべてのフィールドをクリアするボタンを持っています。カーソルが特定のテキストボックスにある場合は、ボタンをクリックしてそのテキストボックステキストのみを削除します。

特定のテキストボックス内のテキストを削除するために必要なコードは、カーソルがそのテキストボックス内にある場合にのみボタンで表示するのが難しいです。

例:カーソルがtextBox1にある場合、ボタンはそのテキストボックスのみを消去します。

ご迷惑をおかけして申し訳ありません。

ありがとうございました。

答えて

1

それがフォーカスを得ることができます。

TextBoxesにフォーカスがあるかどうかを確認する必要があります最後にです。

TextBox focusedTextBox = null; 

hook upすべての3つのTextBoxesEnterイベントでこのイベント:

private void textBoxes_Enter(object sender, EventArgs e) 
{ 
    focusedTextBox = sender as TextBox; 
} 

が、これは一つだけ、ユーザーがクリアされます

は、そのためのクラスレベルの変数を作成します。最後にあった:

private void buttonClearCurrent_Click(object sender, EventArgs e) 
{ 
    if (focusedTextBox != null) focusedTextBox.Text = ""; 
} 
+0

ありがとう、これは私が問題を抱えていたものです。私はあなたの助けに感謝します。 –

0

この場合、テキストボックスのFocusedプロパティを使用する必要があります。 しかし、どのテキストボックスがフォーカスされているかを特定するためにループを作成する必要があります。

のように:

var focusedControl; 
foreach(var control in this.Controls) 
{ 
    if(control is TextBox) 
    { 
     if(control.Focused) 
     { 
      focusedControl = control; 
      break; 
     } 
    } 
} 
+0

ボタンをクリックしても機能しません。彼は前に追跡する必要があります! – TaW

+0

うん...あなたは正しい...あなたのソリューションはより良い方法です.x。= D @Taw – Henrique

0

あなたがイベントを使用することができます:Buttonをクリックすると、 "MouseHover" または "MouseClickと" と設定textBox1.Text = "を"

関連する問題