Получить текущее фокусированное текстовое поле в C # - PullRequest
3 голосов
/ 30 мая 2010

У меня есть два текстовых поля и кнопка. Когда я нажимаю кнопку, я хочу знать, где находится моя текущая каретка (любой из двух полей) Мне нужно это, чтобы знать, где вставить определенный текст. Я пытался textbox1.Focused; textbox1.enabled но ни сработало. Как мне это реализовать? Спасибо

Ответы [ 2 ]

14 голосов
/ 30 мая 2010

Имейте в виду, что при нажатии кнопки ваши текстовые поля больше не будут иметь фокус. Вам понадобится метод отслеживания того, что было в фокусе до события нажатия кнопки.

Попробуйте что-то вроде этого

public partial class Form1 : Form
{
    private TextBox focusedTextbox = null;

    public Form1()
    {
        InitializeComponent();
        foreach (TextBox tb in this.Controls.OfType<TextBox>())
        {
            tb.Enter += textBox_Enter;
        }
    }

    void textBox_Enter(object sender, EventArgs e)
    {
        focusedTextbox = (TextBox)sender;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (focusedTextbox != null)
        {
            // put something in textbox
            focusedTextbox.Text = DateTime.Now.ToString();
        }
    }
}
1 голос
/ 19 июля 2014

Есть очень простой способ сделать это. Ваше требование простое, поскольку у вас есть только два текстовых поля.

Вы можете назначить строковую переменную для всего класса, которая сохраняется при вызове textbox1_GotFocus(), а также textbox2_GotFocus(). Так что, если это textbox GotFocus() вызывается, вы присваиваете значение. Затем поместите условие для строковой переменной для всего класса в кнопку, чтобы, если переменная для всего класса имела такое значение, это текстовое поле заполнялось тем, что вы хотите поместить в текстовое поле.

Это сработало для меня, поэтому я считаю, что это должно сработать на вас.

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