我制作了一个自定义数字键盘控件,我想将它放在我的 winform 应用程序中。所有按钮都有一个OnClick
事件,可以将值发送到我放置自定义控件的表单中的焦点文本框。像这样:
private void btnNum1_Click(object sender, EventArgs e)
{
if (focusedCtrl != null && focusedCtrl is TextBox)
{
focusedCtrl.Focus();
SendKeys.Send("1");
}
}
focusedCtrl
应该MouseDown
在按钮的事件上设置,如下所示:
private void btnNum1_MouseDown(object sender, EventArgs e)
{
focusedCtrl = this.ActiveControl;
}
其中this.ActiveControl
表示窗体上的活动控件。
我的问题是按钮总是在事件检测到以前的焦点控件之前获得焦点。如何在按钮获得焦点之前检测哪个控件获得焦点?我应该使用另一个事件吗?提前致谢!
编辑:另外,我宁愿不使用GotFocus
表单中每个文本框上的事件来设置focusedCtrl
,因为这可能很乏味,因为我希望我的自定义控件的所有编码都在控件本身中,而不是在它所在的表单上被放置。(不过,如果没有其他实用的方法可以满足我的要求,我会这样做)