简体   繁体   English

如何在Windows应用程序中制作键盘

[英]how to make keyboard in windows application

I need keyboard functionality in windows form application I am using 我需要使用Windows窗体应用程序中的键盘功能

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

在此处输入图片说明

But I need it for multiple textbox like if focused on textbox1 it will add text in textbox1 an if TextBox2 focused keyboard button will effect on TextBox2 only. 但是我需要多个textbox例如,如果将焦点放在textbox1 ,它将在textbox1添加text ;如果以TextBox2焦点的键盘button将仅在TextBox2起作用。

like real keyboard functionality in .Net 3.5 version 如.Net 3.5版本中的真实键盘功能

seen in screen shoots 在屏幕截图中看到

First find the focussed textbox, then set the text in that box: 首先找到重点突出的文本框,然后在该框中设置文本:

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;
}

Footnote: Finding the focus was derived from: What is the preferred way to find focused control in WinForms app? 脚注:寻找焦点的来源是: 在WinForms应用程序中寻找焦点控件的首选方法是什么?

I would like to suggest you an option. 我想建议您一个选择。 Hope that it will help you 希望对您有帮助

Declare a global TextBoxObject in the page and assign the textbox that is currently focused to this object. 在页面中声明一个全局TextBoxObject,然后将当前集中于此对象的文本框分配给该对象。 there will be an event handler let it be btnW_Click for all buttons. 会有一个事件处理程序,所有按钮都设为btnW_Click then you can add text to the focused textbox. 然后您可以将文本添加到重点文本框中。 See the code for this: 请参见以下代码:

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);
   }
}

You have to assign focus to the text box by using following code: 您必须使用以下代码将焦点分配给文本框:

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

Try this: 尝试这个:

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;
}

Try this: 尝试这个:

It will helpful for you. 这将对您有所帮助。

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;
    }
}
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM