C# 如何捕获所有编辑框焦点事件

问题描述

触摸屏程序,有很多个界面,需要每个界面中的Edit框得到焦点时显示一个虚拟键盘(虚拟键盘不能遮挡编辑框,同时虚拟键盘不能超出屏幕范围),当编辑框失去焦点时隐藏虚拟键盘;C#中如何实现?注:本人之前用C++,钩子函数可以实现上述功能:SetWindwosHookEx(WH_CALLWNDPROCRET,。。。。),只需在此函数的回调中就能处理所有控件得到和失去焦点问题,C#中有没有类似的方法实现上述功能,我不想在每个编辑框中都添加事件处理代码,这样太麻烦了。。。

解决方案

解决方案二:
用循环动态给Edit控件加事件。几行代码就搞定了
解决方案三:
所有edit都动态绑定到一个OnEnter事件中,参数sender就是获得焦点的edit
解决方案四:
请问如何在循环中给一个程序中所有的edit添加事件?
解决方案五:
两种方法:1、foreach(vareditorinthis.Controls.OfType<TextBox>()){editor.GotFocus+=(sender,args)=>{/*显示虚拟键盘*/};editor.LostFocus+=(sender,args)=>{/*隐藏虚拟键盘*/};}

2、从TextBox派生一个类,并重写OnGotFocus和OnLostFocus方法
解决方案六:
foreach(vareditorinthis.Controls.OfType<TextBox>()){editor.GotFocus+=(sender,args)=>{/*显示虚拟键盘*/};editor.LostFocus+=(sender,args)=>{/*隐藏虚拟键盘*/};}这个循环放在那里啊放在timer里不行啊
解决方案七:
放到form_load里啊窗体实例的时候绑定就行了,不要放timer里不停绑定事件啊没有打开的窗体也不需要绑定事件啊
解决方案八:
这个form_load应该是主窗体(有输入框的窗体),而不是软键盘的窗体吧?我使用的进程ProcessmyProcess=Process.start("软键盘.exe");怎么隐藏键盘????或者你有什么好方法显示和隐藏键盘吗?
解决方案九:
引用7楼u011500419的回复:

这个form_load应该是主窗体(有输入框的窗体),而不是软键盘的窗体吧?我使用的进程ProcessmyProcess=Process.start("软键盘.exe");怎么隐藏键盘????或者你有什么好方法显示和隐藏键盘吗?

你这问题和你的题目想去甚远啊。
解决方案十:
也用钩子吧,在c#中也可以调用Win32API的,只不过稍微麻烦一点。但是总比一个一个写要简单很多

时间: 2025-01-23 10:48:16

C# 如何捕获所有编辑框焦点事件的相关文章

EasyUI,点击开启编辑框,并且编辑框获得焦点的方法

这篇文章主要介绍了EasyUI,点击开启编辑框,并且编辑框获得焦点的方法,需要的朋友可以参考下 代码如下: onClickRow : function(rowIndex, rowData){ var editor = $('#datagrid').datagrid('getEditor', {index:rowIndex,field:"buyNum"}); editor.target.focus(); } 点击一行,开启编辑框的同时,将光标放在编辑框中. rowIndex:是开启编辑框

js-jquery验证文本框不为空,失去焦点事件怎么只能执行一次

问题描述 jquery验证文本框不为空,失去焦点事件怎么只能执行一次 var name = $("input[name='name']"); var nameval = name.val(); var nameinfo = $("#nameinfo"); name.on('blur',function(){ if($.trim(nameval) == ''){ nameinfo.show(); }else{ nameinfo.hide(); } }); 解决方案 j

mfc-vc如何实现按下回车后编辑框输入焦点传递到下一编辑框?控件如何绑定类

问题描述 vc如何实现按下回车后编辑框输入焦点传递到下一编辑框?控件如何绑定类 vc如何实现按下回车后编辑框输入焦点传递到下一编辑框?控件如何绑定类? 解决方案 在对话框界面按下Ctrl+D组合键,将各个控件的Order进行排序,设置你想要的次序,设置好后,添加PreTranslateMessage函数并加入如下代码···试试吧 BOOL CCodeMess::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code

javascript-js改变文本框的value,什么事件能捕获到文本框内容的改变

问题描述 js改变文本框的value,什么事件能捕获到文本框内容的改变 文本框的value是由js改变的,什么事件能捕获到文本框内容的改变. 我查到onpropertychange但是只适合IE浏览器,有的说oninput可以但是没有实践成功. 求解(用的谷歌浏览器) 解决方案 可以参考AngularJS 的双向绑定. 解决方案二: 用jquery给控件绑定变更事件类似如下,当内容被修改时,背景颜色变化 $(".field").change(function(){ $(this).cs

移动开发-jquery mobile输入框获得焦点时弹出浮动编辑框

问题描述 jquery mobile输入框获得焦点时弹出浮动编辑框 在使用jquerymobile开发安卓客户端的时候,当编辑框获得焦点时,会多出一个看起来浮动着的编辑框,是黄色边框,看起来很不舒服,不知道有没有哪位大侠可以帮忙解决一下啊

发送一个字符串到其他程序的焦点编辑框

问题描述 我像用C#做一个程序,发送一个字符串到其他应用程序的焦点编辑框,比如WORD或者其他软件的编辑输入框.这样用sendmaessage()函数,但是如何定位另外一个程序的编辑框,是获取其他程序的编辑框的句柄,还是要定位当前书标的坐标.提供下思路.谢谢. 解决方案 解决方案二:抓句柄..但是你这个思路并不是健康的思路..解决方案三:systemapiGetFocus获取句柄后设置字符串到剪贴板SendMessage(hwnd,770,0,0);粘贴.解决方案四:谁知道提供下详细思路

EasyUI,点击开启编辑框,并且编辑框获得焦点的方法_jquery

复制代码 代码如下: onClickRow : function(rowIndex, rowData){      var editor = $('#datagrid').datagrid('getEditor', {index:rowIndex,field:"buyNum"});      editor.target.focus();  } 点击一行,开启编辑框的同时,将光标放在编辑框中. rowIndex:是开启编辑框这行当前页的行索引,从0开始: buyNum:是开启编辑框的字段

Delphi标准控件-编辑框(Edit)

编辑框也是Windows程序中常用的组件,它主要用于输入单行文字.下面解释编辑框一些常用属性. Edit常用的几个事件为:OnChange.OnKeyPress.OnEnter事件,下面对它们做简单的介绍: 上边介绍的三个编辑框事件非常有用,在Delphi编程中经常用到.使用这三个事件,可以实现一些很有用的功能: 属性 说明 PasswordChar 这个属性在一些编辑框组件如TMaskEdit.TDBEdit中都有.缺省时该属性为#0,即没有掩码.用户可以自己设置一个掩码,如'*',则用户在编

lookupedit-lookUpEdit编辑框删除内容后的问题

问题描述 lookUpEdit编辑框删除内容后的问题 lookUpEdit,用datasource绑定数据,先选一条数据,然后在编辑框删除该数据, 按回车或者离开焦点,发现编辑框内的数据没有被删除,还是原来那条.必须在删 除数据后,按esc键,才行.请问,能不能提供方法,实现按回车或离开焦点,就删 除编辑框内容的功能. 解决方案 //绑定lookUpEdit private void BoundData() { string sql = "select daID,xm,sfzh from bas