我有一个自定义容器控件(派生自FlowLayoutPanel
),其中包含由用户拖到那里的零个或多个子控件。单击子控件时,它被“选中”。(它是用彩色边框绘制的,并且可以选择更改其属性。)
我想处理该Delete
键,以便如果用户当前正在容器控件中工作(例如在控件内或子控件上单击),则删除当前选定的控件(如果有的话)。
我已经使用子项目上的右键单击上下文菜单来使用删除功能。我的问题是处理Delete
钥匙。我无法弄清楚如何让 KeyDown 事件在我的容器控件中引发。我知道它与焦点有关,因此Control.Select()
必须调用(或等效的),但是最好的方法是什么?这个焦点逻辑在哪里?或者,还有更好的方法?
我不想处理KeyDown
表单中的事件,然后嗅出焦点在哪里。这是一个可重用的容器控件,我希望逻辑驻留在那里。
我必须做什么才能让KeyDown
事件在自定义控件上触发?
public class MyContainer : FlowLayoutPanel
{
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
MessageBox.Show("How do I get here?");
e.Handled = true;
}
base.OnKeyDown(e);
}
}