c# - 用户控件 C# 按键
问题描述
我创建了一个用户控件。此用户控件有 1 个文本框和 1 个按钮。
我的用户控件
private void textBoxCombo_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
buttonCombo_Click(null, null);
}
private void buttonCombo_Click(object sender, EventArgs e)
{
Execute some tasks!!
}
我有两种形式:父亲形式和继承形式。
父表单代码:Keypreview 设置为 true
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter || e.KeyChar == (char)Keys.Escape)
e.Handled = true; // stop annoying beep
// call base handler...
base.OnKeyPress(e);
}
private void formBase_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
SelectNextControl(ActiveControl, !e.Shift, true, true, true);
}
继承表单 - 在我的表单中有 3 个组件:1 个 TextBox、1 个 MyUserControl 和 1 个 ComboBox。
当我继承的表单开始时,光标是文本框中的焦点。如果我按 ENTER,焦点将变为 MyUserControl。如果我再次按 ENTER,焦点将变为 ComboBox。
但是这个组合框将在我的用户控件中填充数据过程。
问题就在这里...
当光标位于我的用户控件的文本框中时。如果我按 ENTER,我的用户控件将执行单击按钮,并且表单会将焦点更改为下一个组件 .. 组合。但是组合在完成按钮单击过程之前获得焦点,然后组合现在没有数据。
如何控制这个?
解决方案
在父窗体上设置KeyPress
事件,
不要忘记将KeyPreview
属性设置为TRUE
.
该事件将调用用户控件中的一个公共方法,该方法将执行对按钮的单击。
例如:
表格1:
不要忘记将KeyPreview
属性设置为 TRUE。
// User control will be decleared globaly
private UserControl1 MyUserControl;
// Called from the load event for example
private void UserControlDefinitions()
{
MyUserControl = new UserControl1();
MyUserControl.Location = new Point(5, 5);
this.Controls.Add(MyUserControl);
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
if (MyUserControl != null)
{
MyUserControl.EnterWasClickedFromOutside();
}
}
}
用户控制:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public void EnterWasClickedFromOutside()
{
button1.PerformClick();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Enter Key Was Pressed In Form1");
// Do something...
}
}
推荐阅读
- css - iframe 不更新 Safari 中的高度
- javascript - react: ReactGridLayout.children[0].x 必须是数字
- php - 为什么我部署的 Laravel 8 应用程序无法通过符号链接在存储目录中找到图像?
- elasticsearch - 在 ElasticSearch Nest 客户端中按日期范围和关键字搜索?
- javascript - 如何在不依赖按键的情况下检测 Windows alt 代码输入?
- sql - 使用键入或复制的值时 SQL Server 输出不同的结果
- python - 如何使用熊猫比较一组一天中的行?
- r - 有没有一种方法可以找到在 R 上按区间分组的数据的近似平均值、中位数和众数?
- python - 按顺序对图像进行排序
- mysql - 允许重复某些 ID 的随机 SQL 查询