zoukankan      html  css  js  c++  java
  • WINCE 扫描完自动下行和点击TEXTBOX高亮选中

    一、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();
                };
            }

     

  • 相关阅读:
    [题解] LuoguP1587 [NOI2016]循环之美
    [题解] LuoguP3705 [SDOI2017]新生舞会
    [题解] LuoguP3702 [SDOI2017]序列计数
    [题解] LuoguP6476 [NOI Online 2 提高组]涂色游戏
    [题解] LuoguP4240 毒瘤之神的考验
    [题解] LuoguP6156简单题
    [题解] LuoguP6055 [RC-02] GCD
    [题解] LuoguP5050 【模板】多项式多点求值
    AtCoder Grand Contest 028题解
    Codeforces Round #421 (Div. 1) 题解
  • 原文地址:https://www.cnblogs.com/chehaoj/p/3035265.html
Copyright © 2011-2022 走看看