WINCE 扫描完自动下行和点击TEXTBOX高亮选中
2013-04-22 12:30 时空印记 阅读(2315) 评论(0) 编辑 收藏 举报一、WINCE 扫描完自动下行:
在一般的Windows Forms C#编程中我们可以通过检测回车事件,然后使用SendKeys.Send("{TAB}");来实现。
但Windows CE(.NET Framework 2.0/3.5)中不支持SendKeys.Send方法,因此可以改为调用keybd_event这个API来实现。
例如:
1、引入命名空间:
using System.Runtime.InteropServices;
2、keybd_event方法定义:
[DllImport("Coredll.dll", EntryPoint = "keybd_event")]
public static extern void keybd_event(
byte bVk,
byte bScan,
int dwFlags,
int dwExtraInfo
);
注:Coredll.dll它是一个会被所有用户进程都加载的动态链接库,所有的应用程序都不能直接与操作系统或硬件打交道,如果用户程序需要访问Windows CE所提供的服务,那么必须通过Coredll.dll来进行。
3、keybd_event方法调用:
private void txtNumber_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')//ENTER键
{
if (txtNumber.Text.Trim() != "")
{
keybd_event(9, 0, 0, 0);//TAB键 KeyCode为9
}
else
{
txtNumber.Focus();
}
}
}
该方法是在网上看到,出处已不详。
二、 WINCE 中点击TEXTBOX高亮选中
在开发WinCe的过程中,需要实现TextBox点击获得焦点后实现高亮全选,看了TextBox有个SelectAll() 方法。
查了MSDN说法是:选择文本框的全部内容。可事实却是在 TextBox的selectall方法在getfocus事件中,并没有生效。MSDN上也没有找到解释。
在GOOGLE下了解下大概过程是,SelectAll方法实际上是生效执行了的,但是在执行getfocus事件之后,再执行了mouseup事件(WINFORM)或onclick事件(WINCE),但是在WINCE里,textbox根本就不支持onclick事件,所以要实现该效果就必须得重写该TEXTBOX。重写TEXTBOX可参考:http://blog.csdn.net/liangzhonglin/article/details/6747901
我嫌麻烦,没用此方法,看到了一个老外的一个解决方案,轻松解决,原理用的是计时器,详见:
private void txtCommon_GotFocus(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
Timer timer = new Timer();
timer.Interval = 100;
timer.Enabled = true;
timer.Tick += (EventHandler)delegate(object obj, EventArgs args)
{
tb.SelectAll();
timer.Dispose();
};
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器