[英]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.