精华内容
下载资源
问答
  • 假设有如下界面(输入法的上面的输入区域是Dialog实现的)要求当输入法关闭的时候,Dialog也一起关闭,这样用户就不需要返回两次了。网上找了很多资料都没有很好的解决这个问题,输入法是第三方程序,确实不好检测...

    假设有如下界面(输入法的上面的输入区域是用Dialog实现的)

    这里写图片描述

    要求当输入法关闭的时候,Dialog也一起关闭,这样用户就不需要返回两次了。

    网上找了很多资料都没有很好的解决这个问题,输入法是第三方程序,确实不好检测它的关闭与显示。

    后来在EditText源码中看到

    public boolean onKeyPreIme(int keyCode, KeyEvent event){
    }
    

    对该方法官方文档:

    Handle a key event before it is processed by any input method associated with the view hierarchy. This can be used to intercept key events in special situations before the IME consumes them; a typical example would be handling the BACK key to update the application’s UI instead of allowing the IME to see it and close itself.

    特别是最后一句话,该方法可以用来处理返回键来更新程序的UI。

    一、使用onKeyPreIme()方法来实现

    所以我们监听通过 onKeyPreIme 的返回键,来关闭Dialog。

    
    public class MyEditText extends EditText {
    
        public MyEditText(Context context) {
            super(context);
        }
    
        public MyEditText(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public MyEditText(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        public interface BackListener {
            void back(TextView textView);
        }
    
    
    
        private BackListener listener;
    
        public void setBackListener(BackListener listener) {
            this.listener = listener;
        }
    
    
    
        @Override
    
        public boolean onKeyPreIme(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
                if (listener != null) {
                    listener.back(this);
                }
            }
            return false;
        }
    }
    
    
    
    

    在布局中使用我们自定义的EditText来代替系统的EditText:

    
    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout
    
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/white"
        android:orientation="vertical">
    
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="44dp"
            android:gravity="center_vertical"
            android:orientation="horizontal">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_vertical"
                android:orientation="horizontal">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="16dp"
                    android:text="长"
                    android:textColor="#333"
                    android:textSize="14sp"/>
    
    
    
                <MyEditText
                    android:id="@+id/et_length"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:background="@null"
                    android:gravity="center"
                    android:hint="0cm"
                    android:inputType="number"
                    android:maxLines="5"
                    android:textColorHint="#ccc"/>
            </LinearLayout>
    
    
    
            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/divider_line"/>
    
    
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_vertical"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="16dp"
                    android:text="宽
                    android:textColor="#333"
                    android:textSize="14sp"/>
                    
                <MyEditText
                    android:id="@+id/et_width"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content
                    android:layout_marginLeft="10dp"
                    android:background="@null"
                    android:gravity="center"
                    android:hint="0cm"
                    android:inputType="number"
                    android:maxLines="5"
                    android:textColorHint="#ccc"/>
            </LinearLayout>
        </LinearLayout>
    
    
    
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/divider_line"/>
    
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="44dp"
            android:gravity="center_vertical"
            android:orientation="horizontal">
    
    
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_vertical"
                android:orientation="horizontal">
    
    
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="16dp"
                    android:text="高"
                    android:textColor="#333"
                    android:textSize="14sp"/>
    
    
    
                <MyEditText
                    android:id="@+id/et_height"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:background="@null"
                    android:gravity="center"
                    android:hint="0cm"
                    android:inputType="number"
                    android:maxLines="5"
                    android:textColorHint="#ccc"/>
            </LinearLayout>
    
    
    
            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/divider_line"/>
    
    
    
            <View
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:orientation="horizontal"/>
    
        </LinearLayout>
    </LinearLayout>
    
    

    然后在Activity实现该接口,并且调用back方法

    
     @Override
    
     public void back(TextView textView) { 
           if (sizeDialog != null && sizeDialog.isShowing()) {
                    sizeDialog.dismiss();
            }
     }
    
    
    
    private void initViews(){
        MyEditText etLength = (MyEditText) sizeDialog.findViewById(R.id.et_length);
        etLength.setBackListener(this);
        MyEditText etWidth = (MyEditText) sizeDialog.findViewById(R.id.et_width);
        etWidth.setBackListener(this);
        MyEditText etHeight = (MyEditText) sizeDialog.findViewById(R.id.et_height);
        etHeight.setBackListener(this);
    }
    
    

    二、使用setOnKeyListener()方法来实现

    如果不想新建一个EditText的子类,可以使用EditText的setOnKeyListener()方法,如:

    editText.setOnKeyListener(new View.OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if ((event.getAction() == KeyEvent.ACTION_UP) && (keyCode == KeyEvent.KEYCODE_BACK)) {
                Logger.d("editTextvalue:" + editText.getText());
                return true;
            }
            return false;
        }
    });
    

    该方式和onKeyPreIme的方式有点区别,EditText输入完数值后,按返回键,setOnKeyListener回调只会调用一次(action=ACTION_UP),而onKeyPreIme的回调会调用两次(action=ACTION_DOWN和action=ACTION_UP)。但是当用户继续按返回键关闭界面时,onKeyPreIme和setOnKeyListener的方式的回调方法都会调用两次(action=ACTION_DOWN和action=ACTION_UP)。

    最后运行效果,按返回键,键盘和Dialog都消失了:

    这里写图片描述

    三、监听View的OnGlobalLayoutListener方法来实现

    以上两个方法都有一个问题:如果关闭键盘通过键盘上的按钮关闭的,不是通过手机的返回键关闭的,则无法监听到输入法的关闭。

    可以通过实现ViewTreeObserver.OnGlobalLayoutListener接口来监听,当布局发生变动,来获取正在显示的窗口大小(getWindowVisibleDisplayFrame),如果超过了屏幕的百分之多少 ,来确定输入法状态(关闭、弹出

    public class KeyboardLayout extends FrameLayout {
    
        private KeyboardLayoutListener mListener;
        private boolean mIsKeyboardActive = false; //&emsp;输入法是否激活
        private int mKeyboardHeight = 0; // 输入法高度
    
        public KeyboardLayout(Context context) {
            this(context, null, 0);
        }
    
        public KeyboardLayout(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public KeyboardLayout(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            // 通过视图树监听布局变化
            getViewTreeObserver().addOnGlobalLayoutListener(new KeyboardOnGlobalChangeListener());
        }
    
        private class KeyboardOnGlobalChangeListener implements ViewTreeObserver.OnGlobalLayoutListener {
    
            int mScreenHeight = 0;
            Rect mRect = new Rect();
    
            private int getScreenHeight() {
                if (mScreenHeight > 0) {
                    return mScreenHeight;
                }
                mScreenHeight = ((WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE))
                        .getDefaultDisplay().getHeight();
                return mScreenHeight;
            }
    
            @Override
            public void onGlobalLayout() {
                // 获取当前页面窗口的显示范围
                getWindowVisibleDisplayFrame(mRect);
    
                int screenHeight = getScreenHeight(); //屏幕高度
                int keyboardHeight = screenHeight - mRect.bottom; // 输入法的高度
                boolean isActive = false;
                if (Math.abs(keyboardHeight) > screenHeight / 5) {
                    isActive = true; // 超过屏幕五分之一则表示弹出了输入法
                    mKeyboardHeight = keyboardHeight;
                }
                mIsKeyboardActive = isActive;
                if (mListener != null) {
                    mListener.onKeyboardStateChanged(isActive, keyboardHeight);
                }
            }
        }
    
        public void setKeyboardListener(KeyboardLayoutListener listener) {
            mListener = listener;
        }
    
        public KeyboardLayoutListener getKeyboardListener() {
            return mListener;
        }
    
        public boolean isKeyboardActive() {
            return mIsKeyboardActive;
        }
    
        /**
         * 获取输入法高度
         *
         * @return
         */
        public int getKeyboardHeight() {
            return mKeyboardHeight;
        }
    
        public interface KeyboardLayoutListener {
            /**
             * @param isActive       输入法是否激活
             * @param keyboardHeight 输入法面板高度
             */
            void onKeyboardStateChanged(boolean isActive, int keyboardHeight);
        }
    
    }
    
    

    如果你觉得本文帮助到你,给我个关注和赞呗!

    另外,我为 Android 程序员编写了一份:超详细的 Android 程序员所需要的技术栈思维导图

    如果有需要可以移步我的 GitHub -> AndroidAll,里面包含了最全的目录和对应知识点链接,帮你扫除 Android 知识点盲区。 由于篇幅原因只展示了 Android 思维导图:
    超详细的Android技术栈

    展开全文
  • Win10笔记本电脑如何关闭自带的键盘

    千次阅读 2020-08-18 10:39:27
    目录 1 卸载驱动 2 关闭笔记本电脑端口程序 程序员一般编程很少去哪笔记本键盘编程,一般都外接键盘,但是我感觉眼睛距离屏幕位置太远想放上笔记本上,但是老师...重启,笔记本自带键盘关闭 如果想恢复,只要以...

    目录

    1 卸载驱动

    2 关闭笔记本电脑端口程序


    程序员一般编程很少去用笔记本键盘编程,一般都外接键盘,但是我感觉眼睛距离屏幕位置太远想放上笔记本上,但是老是误触就想到关闭,反正平常也只是个摆设不怎么用。

    1 卸载驱动

    1 Win+X

    2 卸载或者禁用设备 

    2 关闭笔记本电脑端口程序

    Win+R

     

    在弹出的窗口中将下面这段代码输入进去,并且回车。

    sc config i8042prt start= disabled

    重启,笔记本自带键盘关闭

    如果想恢复,只要以同样方法输入下面这个代码,重启即可。

    sc config i8042prt start= auto

    或者回滚笔记本键盘驱动,重启即可,笔记本的触摸板关闭较为简单。

    展开全文
  • 我需要关闭显示器,(只关闭显示器,电脑不待机。)鼠标键盘不会被唤醒。 需要按指定键才能唤醒,不能拦截鼠标键盘消息,因为后台程序需要发送相关的键鼠消息。
  • 今天讲的是如何在Android程序中检查虚拟键盘的状态, 如何开启关闭虚拟键盘. 过Android手机的童鞋们都知道, Android的虚拟键盘是挺挫的~~~ 按键不精确, 反应也很2... 在Android系统服务里有个Input...
    最近都在推上, 荒废了blog, 所以都没怎么写心得, 对不起大家了哈 (其实也很忙 ;)

    现在准备有空就写点实践心得, 希望对大家有帮助.

    今天讲的是如何在Android程序中检查虚拟键盘的状态, 如何开启关闭虚拟键盘.

    用过Android手机的童鞋们都知道, Android的虚拟键盘是挺挫的~~~ 按键不精确, 反应也很2...

    在Android系统服务里有个InputMethodManager是用来控制输入法的:

    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);


    用:

    if (imm.isActive())

    来检查虚拟键盘是不是在开启的状态

    然后可以用toggle方法来关闭它

    imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS);

    当然如果当前虚拟键盘是关闭的, toggle就会开启键盘.

    InputMethodManager也有独立开启和关闭的方法:

    imm.showSoftInput(view, flags);
    imm.showSoftInputFromInputMethod(token, flags);
    imm.hideSoftInputFromInputMethod(token, flags);

    但我在实践中从window获取那个token偶尔会出Exception, 所以现在都在用toggle这个方法将就着 ;)
    展开全文
  • 用键盘操作访达(Finder) 使用键盘打开访达 由于访达本身就是一直打开的,访达只能重启而无法关闭,所以,只要我们用Command+tab,并配合Option键即可打开访达。Command+tab选中就不用我多说了,我要说的是用...

    用键盘操作访达(Finder)

    使用键盘打开访达

    由于访达本身就是一直打开的,访达只能重启而无法关闭,所以,只要我们用Command+tab,并配合Option键即可打开访达。Command+tab选中就不用我多说了,我要说的是用Command+tab选中后无法打开的情况,你还是用Command+tab选中,选中访达后(其它程序也一样)放开tab键但不要放开Command键,而是在放开Command键之前先按住Option,然后再放开Command键,这样就能呼出窗口了,这种方法用于打开那些使用Command+W关闭的窗口(或用鼠标点击左上角的×关闭的窗口)。

    用键盘点击访达上方按钮

    下图就是我说的“访达上方按钮”:

    很简单,按control+tab就能选中上边的按钮,然后就可以用tab键和“左右”方向键来移动选择,选中后用“空格”键来代替“单击鼠标左键”即可。

    至于访达的左侧栏和下方目录,貌似没有直接用键盘操作的方法,这时只能设置“把键盘当鼠标使用”了。

    常用操作

    Command+↓:即可打开一个文件或文件夹;

    Command+[和command+]:返回或前进(相当于鼠标点击左上角的“返回/前进”按钮); 

    Option+↑/↓:在列表模式下,定位到列表的最顶部/底部;

    Tab:当文件未选中时,按一下tab键即可选中某个文件(不一定是第一个文件);

    Shift+tab:当选中访达上方某个按钮后,shift+tab能往后走选中(直接按tab是往前走;

    Command+F:光标定位到搜索(随便输入任意字符然后按esc可退出搜索); 

    Command+m:最小化访达(通用关闭窗口快捷键,也可用于其他程序) ;

    Command+w:关闭访达(通用关闭窗口快捷键,也可用于其他程序);

    Command+h:隐藏访达(通用关闭窗口快捷键,也可用于其他程序);


    操作“系统偏好设置”

    前面我们说了怎样把键盘设置成当作鼠标使用,但对于Mac系统本身的功能,在很多情况下我们是不需要设置“把键盘当鼠标用”就能用键盘直接操作的,比如我要进入系统偏好设置,不用鼠标怎么进?

    首先,按Fn+Control+F2就可以定位到左上角的苹果logo中,然后按方向键“下”键选中系统偏好设置,最后按“回车”即可打开“系统偏好设置”。

    进入“系统偏好设置”后,使用Tab键和“上下左右”方向键来选择你要进入哪个功能,最后用“空格”键来确定进入。但是,Tab键必须要做以下设置才行,否则tab键将无法定位到系统偏好设置的菜单中。

    进入系统偏好设置→键盘→快捷键,勾选下图所示的所有控制:


    使用顶部菜单

    先按Fn+Control+F2定位到左上角苹果图标,然后用tab、上、下、左、右键即可操作菜单,当然如果你知道这些菜单的直接快捷键,也可以直接使用快捷键操作。

    当然,如果你开启了F1-F12作为功能键,那么定位苹果图标的快捷键直接用Control+F2即可。


    用键盘打开关闭某个软件

    使用聚焦搜索或Alfred

    使用“聚焦搜索”或第三方软件“Alfred”来打开软件。

    [dl]15-1373[/dl]

    在访达中打开

    我们知道,所有的软件都安装在“应用程序”文件夹中,所以我们只要在访达中进入“应用程序”文件夹,然后你安装的软件都能在里面找到,用上下左右方向键选中软件后,按Command+↓即可打开该软件。

    关闭软件

    用Command+tab切换到该软件(别忘了前面说过,如果窗口切换不出来就用option键),然后按Command+Q即可退出软件。

    强制退出软件,可按Option+Commmand+Q调出强制退出软件的窗口,用上下方向键选中要强制退出的软件,然后按tab键选中“强制退出”按钮,然后按“空格”或“回车”即可强制退出该软件,如果要退出这个“强制退出软件的窗口”,按Esc即可。


    设置“把键盘当鼠标使用”

    当前面的方法无法使用时,开启把键盘当鼠标使用的功能, 这样就可以完全操作任何地方了,只不过不太好用,毕竟是键盘哈哈。

    进入系统偏好设置→辅助功能→鼠标与触控板→选项,勾选按下Option键五次来开关鼠标键(Big Sur系统中也是在辅助功能里,不过变成了“光标控制”(pointer control)):

    然后你就可以连续按5次Optoin键来开启“把键盘当鼠标用”的功能,再次按Option键5次则关闭(开启或关闭都会弹出提示):

    开启之后,你就可以用以下按键来代替鼠标了:

    看上去很复杂,其实不用记,只要以i键为中心或数字小键盘的5键为中心,那么该键的上、下、左、右、左下、右下、左上、右上的按钮分别就是它移动鼠标指针的的方向了。

    看这里更直观:

    至于鼠标右击,在macOS里,无论是真实鼠标还是模拟鼠标,按住ctrl再按鼠标左键就相当于是右击。

    使用完记得再次按5下Option键关闭把键盘作为鼠标使用,否则会使正常打字受影响。

    展开全文
  • 第一次点按钮时程序运行良好,再点按钮时,如果kbhit()无法检测键盘输入,控制台不关闭;如果getch()控制台闪退,经检测是因为getch()始终返回-1. 怀疑是在第一次退出时getch()的缓存区没清除干净导致,但不知道...
  • 前言 这一章节讲述了如何实现 GUI 自动化,首先讲了一些处理异常状况的方法,然后是关于 GUI 自动化的内容,主要有三个部分: 控制鼠标 图像识别 控制键盘 ...方法一:通过注销关闭所有程序: W...
  • Android隐藏于显示键盘

    2013-08-02 18:30:50
     今天讲的是如何在Android程序中检查虚拟键盘的状态, 如何开启关闭虚拟键盘过Android手机的童鞋们都知道, Android的虚拟键盘是挺挫的~~~ 按键不精确, 反应也很2... 在Android系统服务里有个InputMethodManage
  • 1) 通过注销关闭所有程序 停止失去控制的 GUI 自动化程序,最简单的方法可能是注销,这将关闭所有运行的程序。Windows上,注销的热键是:Ctrl+Alt+Delete。通过注销,你会丢失所有未保存的工作。2) 暂停和自动防...
  • 如何用Delphi编ScreenSaver Delphi里如何计算日期 delphi怎样调用外部EXE文件 Win95/98下监控运行的其他程序 控制面板应用大全 避免一个程序二次运行 转换WINDOWS壁纸 改计算机名 为应用程序添加口令 启动...
  • DELPHI专题--程序应用

    2010-04-06 01:11:54
    如何用Delphi编ScreenSaver Delphi里如何计算日期 delphi怎样调用外部EXE文件 Win95/98下监控运行的其他程序 控制面板应用大全 避免一个程序二次运行 转换WINDOWS壁纸 改计算机名 为应用程序添加口令 启动...
  • 使用程序管理焦点 ...比方说,在一个弹窗被关闭的时候,重新设置键盘焦点到弹窗的打开按钮上。 MDN Web 文档关注了这个问题并向我们解释了可以如何搭建可用键盘导航的 JavaScript 部件。 我们可以 DOM...
  • 谁都知道nProtect是驱动层的键盘加密保护,但是这个nProtect也不是时刻接管着我们的键盘,仅仅在用户输入密码的时候才真正启动,而程序如何获知用户开始输入密码了呢?简单的windows编程方法就能想到,就是处理...
  • 简单过QQ的nProtect键盘加密保护

    千次阅读 2007-10-14 13:53:00
    谁都知道nProtect是驱动层的键盘加密保护,但是这个nProtect也不是时刻接管着我们的键盘,仅仅在用户输入密码的时候才真正启动,而程序如何获知用户开始输入密码了呢?简单的windows编程方法就能想到,就是处理...
  • 打开cmd窗口(按下键盘上的Windows+R键),输入netstat -ano,查看当前系统中活动的进程,是否有程序占用了要的端口,拿到占用端口的程序的进程号,输入taskkill /f /pid 进程号,杀死占用端口的程序,此时重新.
  • 如果您想针对如何实现某些事情的正确方向,请打开一个问题或WIP拉取请求。 保存命令历史记录,并与使用情况统计信息/图形一起显示在选项页面上 启用滚动浏览第5条建议 允许单击并重新排序已保存的会话图标和图标行...
  • Android程序设计基础

    热门讨论 2013-08-03 16:28:04
    最终用户不再需要担心哪些应用程序是活动的,也不必在运行新程序前先关闭原有的一些程序。Android针对低能耗、低内存的设备进行了优化,这种根本性的优化是之前的平台从未尝试过的。  高质量的图形和声音。将类似...
  • 或者打开任务管理器先在程序上右击选择最小化(不应该直接结束任务或结束进程,因为那样可能无法自动移除键盘钩子),接着在任务栏上 已经最小化的程序图标上右击选择关闭即可关闭应用程序。 友情提示,如果需要MFC...
  • 我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。 实现原理: 程序里我们先建立一个主工程,作为主界面,然后再建立一个对 话框类,将其加入工程中,然后在程序中调用自己新建的对话框类...
  • Linux程序设计 第4版.haozip01

    热门讨论 2012-11-05 00:24:09
    13.3.2 如何实现popen 447 13.4 pipe调用 449 13.5 父进程和子进程 451 13.5.1 管道关闭后的读操作 453 13.5.2 把管道用作标准输入和标准输出 454 13.6 命名管道:fifo 456 13.6.1 访问fifo文件 458 13.6.2 ...
  • Linux程序设计 第4版.haozip02

    热门讨论 2012-11-05 00:29:32
    13.3.2 如何实现popen 447 13.4 pipe调用 449 13.5 父进程和子进程 451 13.5.1 管道关闭后的读操作 453 13.5.2 把管道用作标准输入和标准输出 454 13.6 命名管道:fifo 456 13.6.1 访问fifo文件 458 13.6.2 ...
  • MFC的程序框架剖析

    2015-03-05 09:53:19
    得到链表中的头,也就是第一个文档模版,后面就会得到的这个指针去调用pTemplate->OpenDocumentFile(NULL);紧接着就会有一个判断,用来确定该链表中是否只有一项,如果链表中保存了多个文档模版,则会弹出一个...
  • 实例024 为触摸屏程序添加虚拟键盘 31 实例025 触摸屏系统 32 1.8 窗体效果 34 实例026 半透明渐显窗体 34 实例027 窗口颜色的渐变 35 实例028 带背景的窗体 36 实例029 为窗体增加边框 37 1.9...
  • C#程序开发范例宝典

    2010-12-15 20:05:16
    实例028 为触摸屏程序添加虚拟键盘...... 29 1.8 窗体效果...... 30 实例029 半透明渐显窗体...... 31 实例030 窗口颜色的渐变...... 32 1.9 窗体动画...... 33 实例031 窗体中的滚动字幕...... 33 实例...
  • 包括键盘及鼠标事件、常见的窗体对象、菜单与工具栏设计、绘图入门与应用、程序的调试和异常处理以及文件系统操作等:第18章为数据库编程基础篇,介绍了 ADO.NET技术以及如何利用ADO.NET进行数据库连接等。...
  • 包括键盘及鼠标事件、常见的窗体对象、菜单与工具栏设计、绘图入门与应用、程序的调试和异常处理以及文件系统操作等:第18章为数据库编程基础篇,介绍了 ADO.NET技术以及如何利用ADO.NET进行数据库连接等。...
  • 实例024 为触摸屏程序添加虚拟键盘 31 实例025 触摸屏系统 32 1.8 窗体效果 34 实例026 半透明渐显窗体 34 实例027 窗口颜色的渐变 35 实例028 带背景的窗体 36 实例029 为窗体增加边框 37 1.9...
  • 程序开发范例宝典>>

    2012-10-24 10:41:28
    实例028 为触摸屏程序添加虚拟键盘 28 1.8 窗体效果 29 实例029 半透明渐显窗体 29 实例030 窗口颜色的渐变 30 1.9 窗体动画 31 实例031 窗体中的滚动字幕 31 实例032 动画显示窗体 32 实例033...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 331
精华内容 132
关键字:

如何用键盘关闭程序