Если курсор находится в определенном текстовом поле, удалите только этот текст текстового поля нажатием кнопки.

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

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

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

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

Спасибо.


person E. My    schedule 02.04.2016    source источник


Ответы (3)


При щелчке по Button он переходит в фокус.

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

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

TextBox focusedTextBox = null;

Теперь подключите это событие к 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 = "";
}
person TaW    schedule 02.04.2016
comment
Спасибо, это именно то, с чем у меня была проблема. Я ценю вашу помощь. - person E. My; 02.04.2016

В этом случае вы должны использовать свойство Focused в текстовом поле. Но вам нужно сделать цикл, чтобы определить, какое текстовое поле находится в фокусе.

как:

var focusedControl;
foreach(var control in this.Controls)
{
    if(control is TextBox)
    {
        if(control.Focused)
        {
           focusedControl = control;
           break;
        }
    }
}
person Henrique    schedule 02.04.2016
comment
Это не сработает при нажатии кнопки. Он должен следить за собой раньше! - person TaW; 02.04.2016
comment
Ага ... вы правы ... ваше решение лучше ... thx .. = D @Taw - person Henrique; 02.04.2016

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

person TariqN    schedule 02.04.2016