Как я могу выбрать другое текстовое поле, когда я пытаюсь заполнить текстовое поле с помощью кнопки управления - PullRequest
0 голосов
/ 17 апреля 2020

enter image description here

Я пытаюсь заполнить два текстовых поля в форме, используя кнопки управления, но, кажется, работает только для 1. когда я запускаю программу, я не могу выбрать между двумя текстовыми полями. какое условие я должен использовать?

private void Button0_Click(object sender, EventArgs e)
{
    if (???????????????????)
    {
        metroTextBoxQuantity.Text = metroTextBoxQuantity.Text + "0";
    }
    else
    {
        metroTextBoxItemcode.Text = metroTextBoxItemcode.Text + "0";
    }
}

1 Ответ

0 голосов
/ 17 апреля 2020

Одним из возможных решений является создание переменной Control, в которой хранится ссылка на последнее нажатое текстовое поле. Это будет обработано событием Click для обоих текстовых полей. Затем, нажав на кнопку с цифрой, просто добавьте число к выбранной переменной текстового поля. Примерно так:

Control SelectedTextbox { get; set; } = null;

//Use this event handler for both the Quantity and Itemcode textbox
public TextBox_Click(object sender, EventArgs e)
{
    SelectedTextbox = (Control)sender;
}

private void Button0_Click(object sender, EventArgs e)
{
    if(SelectedTextbox == null)
        throw new Exception("SelectedTextbox has not been set");
    SelectedTextbox.Text += "0";
}

Обратите внимание: если MetroTextBox не наследуется от Control, вам нужно изменить SelectedTextbox на другой тип. Скорее всего, это так.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...