C# Windows ElementHost KeyDown 不切换焦点

本文介绍了在C#的Windows应用程序中,如何使用ElementHost来承载WPF控件并处理键盘事件。在UserControl的KeyDown事件中,通过设置`e.Handled = true`避免了方向键切换窗体焦点的问题,实现了连续按键操作。同时展示了如何在Windows窗体的OnLoad事件中加载并初始化WPF控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工程中有时会在windows的工程中,调用WPF的控件,通常WPF的控件继承userControl,在userControl中我们实现键盘事件

可是在处理键盘事件时,在userControl中的Grid中定义事件KeyDown="Tick_OnKeyDown",下面是事件的实现:

private void Tick_OnKeyDown(object sender, KeyEventArgs e)

{

if (e.Key == Key.Up)
                { //放大
                    PicZoom(2);
                    e.Handled = true;
                }
                else if (e.Key == Key.Down)
                { //缩小
                    PicZoom(1);
                    e.Handled = true;
                }

}

 

如果不写:e.Handled = true;,那么2次方向键才会实现一次。原因是方向键在切换窗体上的控件的焦点。

 

在windows窗体中使用WPF的控件:

重载窗体的OnLoad,如下:

 protected override void OnLoad(EventArgs e)
  {
            base.OnLoad(e);
            if (!DesignMode)
            {
                kLineCanvas = new WpfPicture.KLine.KLineCanvas(); //WPF的控件
                elementHost1.Child = kLineCanvas;
            }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值