2016-09-09 2 views
0

мне нужна функциональность клавиатуры в окне формы приложении Я используюкак сделать клавиатуру в окне приложении

private void btnW_Click(object sender, EventArgs e) 
{ 
    txtCategory.Text += btnW.Text;  
} 

enter image description here

Но мне это нужно для нескольких textbox, как если они нацелены на textbox1 это добавит text в textbox1 a если TextBox2 сфокусированная клавиатура button будет действовать только на TextBox2.

как реальная функциональность клавиатуры в .Net версии 3.5

видно на экране стреляет

+1

Это должно вас происходит: http://stackoverflow.com/questions/31843865/in-form-numberpad-c-sharp/31860907#31860907 – rene

ответ

0

Попробуйте это:

object obj; 
private void btnW_Click(object sender, EventArgs e) 
{ 
    if (obj != null) 
    { 
     (obj as TextBox).Text += btnW.Text; 
    } 
} 
private void txtCategory_Click(object sender, EventArgs e) 
{ 
    obj = txtCategory; 
} 
private void textBox1_Click(object sender, EventArgs e) 
{ 
    obj = textBox1; 
} 
+1

это прекрасно, но жаль так поздно –

0

Сначала найдите сфокусированный текстовое поле, а затем установить текст в этом поле:

private void btnW_Click(object sender, EventArgs e) 
{ 
    Func<Control, TextBox> FindFocusedTextBox(Control control) 
    { 
     var container = this as IContainerControl; 
     while (container != null) 
     { 
      control = container.ActiveControl; 
      container = control as IContainerControl; 
     } 
     return control as TextBox; 
    } 

    var focussedTextBox = FindFocusedTextBox(this); 
    if(focussedTextBox != null) 
     focussedTextBox.Text += btnW.Text; 
} 

Сноска: Обнаружение основное внимание было обращено на: What is the preferred way to find focused control in WinForms app?

0

Я хотел бы предложить вам вариант. Надеюсь, что это вам поможет

Объявите глобальный объект TextBoxObject на странице и назначьте текстовое поле, которое в данный момент сфокусировано на этом объекте. будет обработчик событий, пусть это будет btnW_Click для всех кнопок. то вы можете добавить текст в сфокусированное текстовое поле. Смотрите код для этого:

TextBox TextBoxObject; // this will be global 

// Event handler for all button 
private void btnW_Click(object sender, EventArgs e) 
{ 
    if(TextBoxObject!=null) 
    { 
     TextBoxObject.Text += btnW.Text; // This will add the character at the end of the current text 
     // if you want to Add at the current position means use like this 
     int currentIndex = TextBoxObject.SelectionStart; 
     TextBoxObject.Text = TextBoxObject.Text.Insert(currentIndex, btnW.Text); 
    } 
} 

Вы должны назначить фокус в текстовое поле, используя следующий код:

private void textBox2_Click(object sender, EventArgs e) 
{ 
    TextBoxObject = textBox1; 
} 
0

Попробуйте это:

Это поможет вам.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace StackOverflow 
{  
public partial class Form2 : Form 
{ 
    TextBox txtName; 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void textBox1_Click(object sender, EventArgs e) 
    { 
     txtName = textBox1; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (txtName != null) 
     { 
      txtName.Text += button1.Text;         
     } 
    } 
    private void button2_Click(object sender, EventArgs e) 
    { 
     if (txtName != null) 
     { 
      txtName.Text += button2.Text;    
     } 
    } 
    private void textBox2_Click(object sender, EventArgs e) 
    { 
     txtName = textBox2; 
    } 
} 
} 
+0

@zubair Ahmad Прошу обновить кодировку :)))) –

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