Нажав на ту же кнопку, но другое действие - c # - PullRequest
0 голосов
/ 09 ноября 2018

Когда я нажимаю на кнопку, текст появляется в textbox1, но затем я хочу, чтобы он изменил фокус на другое текстовое поле (textbox2), и когда я снова нажимаю ту же кнопку, отображается тот же текст, но в textbox2.

    private void btna_Click(object sender, EventArgs e)
    {
        textBox1.Text = ("A");
        if (textBox1.Text.Length > 0)
        {
            textBox2.Focus();
        }

1 Ответ

0 голосов
/ 09 ноября 2018

Если вы хотите чередовать различные TextBox в вашем событии click, чтобы определить, какой из них нужно обновить, вы можете отследить их в закрытой переменной, а затем просто переключить, какой из них вы используете, на основе текущего значения, например:

private TextBox textBoxToUpdate = null;

private void button1_Click(object sender, EventArgs e)
{
    // Swap the textBoxToUpdate between textBox1 and textBox2 each time
    textBoxToUpdate = (textBoxToUpdate == textBox1) ? textBox2 : textBox1;

    textBoxToUpdate.Text = "A";
}

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

// holds the text boxes we want to rotate between
private List<TextBox> textBoxesToUpdate = new List<TextBox>();

private void Form1_Load(object sender, System.EventArgs e) 
{
    // add some text boxes to our list
    textBoxesToUpdate.Add(textBox1);
    textBoxesToUpdate.Add(textBox2);
    textBoxesToUpdate.Add(textBox3);
    textBoxesToUpdate.Add(textBox4);
}

// stores the index of the next textBox to update
private int textBoxToUpdateIndex = 0;

private void button1_Click(object sender, EventArgs e)
{
     textBoxesToUpdate[textBoxToUpdateIndex].Text = "A";

    // increment the index but set it back to zero if it's equal to the count
    if(++textBoxToUpdateIndex == textBoxesToUpdate.Count) textBoxToUpdateIndex = 0;
}
...