2016-06-28 5 views
0

У меня есть 2 текстовых полей в форме TextBox1 и TextBox2 (Да был довольно ленив) и задачу создания копии и пастообразной функции для применения (по причине практики)Как получить Активный TextBox Windows Forms

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

public partial class Form1 : Form 
    { 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.F1) //Copy 
     { 

     } 
     else if (e.KeyCode == Keys.F2) //Paste 
     { 

     } 
    } 
} 
+0

Может IsFocused? –

ответ

0

Вы должны бросить отправителя в TextBox и получить его имя или что-то идентифицирует ваши текстовые поля. ли это ответственно, используйте as: var textBox = sender as TextBox, а затем проверить его на нуль

EDIT: обработчик события должен быть назначен как TextBox элементов не в форме

+0

Мне нужно сделать это для каждого из моих текстовых полей? ... –

+1

Это будет работать, только если обработчик 'KeyDown' назначен событиям' TextBox' 'KeyDown'. От его имени я думал, что он назначен событию 'Form', поэтому' sender' всегда является 'Form', а не' TextBox'. –

+0

@kennedydelrosario Да, вы должны присвоить это событие каждому 'TextBox' – Alex

0

Возможно, у Вас есть вопрос уже есть ответ.

Form.ActiveControl может быть тем, что вы хотите.

0

Вы можете определить, какой TextBox активируется с помощью ContainsFocus свойства:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    TextBox activeTextBox = textBox1.ContainsFocus 
        ? textBox1 
        : (textBox2.ContainsFocus ? textBox2 : null);  

    if (e.KeyCode == Keys.F1) //Copy 
    { 

    } 
    else if (e.KeyCode == Keys.F2) //Paste 
    { 

    } 
} 

или альтернативно Form.ActiveControl свойство:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    TextBox activeTextBox = ActiveControl as TextBox; 

    if (e.KeyCode == Keys.F1) //Copy 
    { 

    } 
    else if (e.KeyCode == Keys.F2) //Paste 
    { 

    } 
} 
Смежные вопросы