[英]Adding basic events to dynamically added controls
我有一些基本代码,当将控件放置在Canvas上时,我需要用户能够通过简单的按键操作删除该控件。
private void PlaceElementOnCavas(UIElement element, Point point) {
Canvas.SetLeft(element, point.X);
Canvas.SetTop(element, point.Y);
// Add the event to allow the user to press delete and remove the control
element.KeyDown += (sender, e) => {
if (e.Key == Key.Delete) {
this.designCanvas.Children.Remove(element);
}
};
this.designCanvas.Children.Add(element);
}
我的代码看起来像这样。 我的控件添加得很好,恰好在我需要它的画布上。
无论我是尝试通过lambda还是通过对另一种方法的传统调用来添加事件处理程序,该事件处理程序都不会执行任何操作。
我想念什么?
以下步骤应足以使您的键盘输入正常工作:
Focusable="True"
MouseLeftButtonUp
并分配Keyboard.Focus
Background
以捕获鼠标事件 然后单击进入元素以使其聚焦并使用键。 或者,如果您不打算使用鼠标,而只想通过按tab来聚焦鼠标,则只需要Focusable
和按键事件即可。
<Grid x:Name="grid1" KeyDown="grid1_KeyDown" Focusable="True" MouseLeftButtonUp="grid1_MouseLeftButtonUp" Background="Transparent">
</Grid>
焦点处理:
private void grid1_KeyDown(object sender, KeyEventArgs e)
{
// whatever you plan to do
}
private void grid1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Keyboard.Focus(sender as IInputElement);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.