2016-04-02 4 views
0

Я строю простой калькулятор. У меня есть три текстовых поля: textBox1 (первый операнд), textBox2 (второй операнд) и textBox3 (результат). У меня есть множество функций операнда, которые можно выполнить. У меня также есть кнопка, которая очистит все поля, а также другие функции.Если курсор находится в определенном текстовом поле, удалите только текст textBox нажатием кнопки

У меня возникли трудности с кодом, необходимым для удаления текста в определенном текстовом поле с помощью кнопки, только когда курсор находится в этом текстовом поле.

Ex: если курсор находится в textBox1, кнопка только очищает это текстовое поле.

Любая помощь очень ценится.

Спасибо.

ответ

1

Когда Button нажата она получит фокус.

Итак, вам нужно отслеживать, какой из ваших TextBoxes получил фокус последний.

Создайте переменный уровень класса для этого:

TextBox focusedTextBox = null; 

Теперь hook up это событие с Enter события всего триTextBoxes:

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

Да ... вы правы ... ваше решение является лучшим способом ..thx .. = D @Taw – Henrique

0

Вы можете использовать событие: "MouseHover" или "MouseClick" и установите TextBox1.Text = ""