我创建了一个用作键盘的用户控件。我以与键盘完全相同的方式在控件中排列按钮,并设置(ControlStyles.Selectable, false)
。这允许焦点保留在用户在父窗体上选择的文本框中。我还将用户控件的样式设置为不可选择。当用户按下按钮时,一切都很好,但是当用户控件被点击时,它会将焦点从文本框中移开。这是我的代码:
public partial class TouchKeyboard : UserControl
{
public TouchKeyboard()
{
InitializeComponent();
SetStyle(ControlStyles.Selectable, false);
}
private void TouchKeyboard_Load(object sender, EventArgs e)
{
foreach (var button in this.Controls.OfType<CustomControls.CustomButton>())
{
button.Click += new EventHandler(this.ButtonClick);
}
}
private void ButtonClick(object sender, EventArgs e)
{
var button = sender as CustomControls.CustomButton;
if (button.Name == "btnSpace")
{
SendKeys.Send(" ");
}
else
{
SendKeys.Send("{" + button.Text + "}");
}
}
}
当ControlStyles.Selectable
设置为false时,为什么我的用户会控制窃取焦点?
答案 0 :(得分:0)
经过几天的拧紧,我终于明白了。由于面板没有窃取焦点,我将一个面板停靠在用户控件中并将我的按钮放在其中。这解决了问题。