当前位置: 首页 > news >正文

网站标题字数网址提交百度

网站标题字数,网址提交百度,wordpress如何加数据库名,企业网站个人备案引言 Winform中如何引入WPF控件的教程很多,对于我们直接通过ElementHost引入的直接显示控件,它是可以响应键盘输入消息的,但对于在WFP中弹出的窗体来说,此时是无法响应我们的键盘输入的。我们需要给它使能键盘输入。 1、使能键盘…

引言

Winform中如何引入WPF控件的教程很多,对于我们直接通过ElementHost引入的直接显示控件,它是可以响应键盘输入消息的,但对于在WFP中弹出的窗体来说,此时是无法响应我们的键盘输入的。我们需要给它使能键盘输入。

1、使能键盘输入消息

简单来说就只有下面一句代码:

System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(window);

其中window是WPF窗体。

但我们在原有的WPF控件库中引入Winform的代码好像不太合适,这两个是完全不同的界面框架。

2、通用方法

通常我们的弹窗需要时单例模式,我这里采用一个静态类管理所有的单例。通过它的Add方法添加并返回WPF窗体。

    /// <summary>/// 创建单例窗体/// </summary>public class SingleInstance{static Hashtable s_typeList = new Hashtable();/// <summary>/// 全局唯一窗口单例,要求无参构造/// 懒加载模式/// </summary>/// <typeparam name="T"></typeparam>/// <typeparam name="W"></typeparam>/// <returns></returns>public static T Create<T, W>()where T : Lazy<W>, new()where W : Window, new(){if (s_typeList.ContainsKey(typeof(T))){if (s_typeList[typeof(T)] is not null)return (T)s_typeList[typeof(T)];else{T t = new T();s_typeList[typeof(T)] = t;t.Value.Closed += (s, e) => s_typeList[typeof(T)] = null;
#if NETFRAMEWORKWinformAction?.Invoke(t.Value);
#endifreturn t;}}else{T t = new T();s_typeList.Add(typeof(T), t);t.Value.Closed += (s, e) => s_typeList[typeof(T)] = null;
#if NETFRAMEWORKWinformAction?.Invoke(t.Value);
#endifreturn t;}}/// <summary>/// 单例窗体容器 不要求无参构造/// 存在且不为空则返回现有实例,否则添加到容器并返回当前实例/// </summary>public static T Add<T>(T window, string key)where T : Window{if (s_typeList.ContainsKey(key)){if (s_typeList[key] is not null)return (T)s_typeList[key];else{s_typeList[key] = window;window.Closed += (s, e) => s_typeList[key] = null;
#if NETFRAMEWORKWinformAction?.Invoke(window);
#endifreturn window;}}else{s_typeList.Add(key, window);window.Closed += (s, e) => s_typeList[key] = null;
#if NETFRAMEWORKWinformAction?.Invoke(window);
#endifreturn window;}}#if NETFRAMEWORK/// <summary>/// 帮助在初始化窗体是执行一些操作,比如注册键盘输入/// </summary>public static Action<Window> WinformAction;
#endif}

这里使用了前置处理器指示词C# 前置處理器指示詞 | Microsoft Learn

通过给WinformAction事件赋值达到自动注册目的

SingleInstance.SingleInstance.WinformAction = window =>
{                                         System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(window);
};

http://www.zhongyajixie.com/news/29979.html

相关文章:

  • wordpress文章 插件seo优化报价公司
  • ip地址直接访问网站最近新闻有哪些
  • wordpress 做的网站seo技术软件
  • 影楼网站制作网站建设费用
  • 营销网站搭建建议app拉新平台有哪些
  • wordpress手机隐藏菜单优化网站排名解析推广
  • 私服网站建设互联网营销专家
  • 可以做专利聚类分析的免费网站兰州模板网站seo价格
  • 自由策划企业网站管理系统破解版谷歌外贸网站
  • 做多站发布信息的网站开封seo公司
  • wordpress php 文件上传seo搜索引擎优化培训班
  • 长沙市做网站公司排名优化设计卷子答案
  • 中国企业报集团官网优化大师电脑版下载
  • 网站建设-纵横网络微信如何引流推广精准加人
  • 政府网站建设历史广告联盟怎么做
  • 企业网站做静态网站还是网站群发推广软件
  • 白洋湾做网站公司百度指数查询平台
  • 订阅号可以做网站链接吗打广告在哪里打最有效
  • 青岛网站优化多少钱石家庄市人民政府官网
  • ppt页面设计模板seo培训学什么
  • 宣传网站制作独立站seo搜索优化
  • 如何做网站首页关键词优化网站关键词排名软件
  • 做导航网站怎么赚钱福州百度关键词排名
  • 网站开发人员如何写工作日志下载百度语音导航地图安装
  • 网站建设课程简介图片企业网站推广建议
  • 添加网站关键词石家庄百度关键词搜索
  • 外贸网站如何选择域名百度世界500强排名
  • 顺德手机网站设计信息域名注册商
  • 政府门户网站建设深圳网络推广优化
  • vue大型网站怎么做路由建站平台哪个好