实例028 为触摸屏程序添加虚拟键盘

news2025/1/17 15:45:23

 

实例说明

由于触摸屏没有键盘,只能利用屏幕操作。如果要输入数据或查找数据,需要制作一个虚拟键盘,以方便用户输入。本例介绍如何实现虚拟键盘的程序设计。运行本例,效果如图1.28所示。

技术要点

本例中用到了Lable控件的透明属性和字符串截取技术。主要是使用Substring()方法。下面详细介绍一下该方法。

Substring()方法用来从此实例检索子字符串。子字符串从指定的字符位置开始且具有指定的长度。其语法结构如下:

public string Substring (int startIndex,int length)

参数说明如下。

l     startIndex:子字符串起始位置的索引。

l     length:子字符串中的字符数。

l     返回值:一个String,等于此实例中从startIndex开始的长度为length的子字符串,如果startIndex等于此实例的长度且length为零,则为Empty

实现过程

(1)创建一个项目,将其命名为Ex01_28,默认窗体为Form1。

(2)在窗体上添加2个Panel控件,1个TextBox控件和许多Label控件,每个Label控件对应背景图片上的1个按钮。

(3)为Panel控件添加背景图片,并将Label控件的BackColor设置为透明。

(4)主要程序代码。

        private void Form1_Load(object sender, EventArgs e)

        {

            lbl_0.Click += new EventHandler(lbl_Click);

            lbl_1.Click += new EventHandler(lbl_Click);

            lbl_2.Click += new EventHandler(lbl_Click);

            lbl_3.Click += new EventHandler(lbl_Click);

            lbl_4.Click += new EventHandler(lbl_Click);

            lbl_5.Click += new EventHandler(lbl_Click);

            lbl_6.Click += new EventHandler(lbl_Click);

            lbl_7.Click += new EventHandler(lbl_Click);

            lbl_8.Click += new EventHandler(lbl_Click);

            lbl_9.Click += new EventHandler(lbl_Click);

            lbl_Q.Click += new EventHandler(lbl_Click);

            lbl_W.Click += new EventHandler(lbl_Click);

            lbl_R.Click += new EventHandler(lbl_Click);

            lbl_E.Click += new EventHandler(lbl_Click);

            lbl_T.Click += new EventHandler(lbl_Click);

            lbl_Y.Click += new EventHandler(lbl_Click);

            lbl_U.Click += new EventHandler(lbl_Click);

            lbl_I.Click += new EventHandler(lbl_Click);

            lbl_O.Click += new EventHandler(lbl_Click);

            lbl_P.Click += new EventHandler(lbl_Click);

            lbl_A.Click += new EventHandler(lbl_Click);

            lbl_S.Click += new EventHandler(lbl_Click);

            lbl_D.Click += new EventHandler(lbl_Click);

            lbl_F.Click += new EventHandler(lbl_Click);

            lbl_G.Click += new EventHandler(lbl_Click);

            lbl_H.Click += new EventHandler(lbl_Click);

            lbl_J.Click += new EventHandler(lbl_Click);

            lbl_K.Click += new EventHandler(lbl_Click);

            lbl_L.Click += new EventHandler(lbl_Click);

            lbl_Z.Click += new EventHandler(lbl_Click);

            lbl_X.Click += new EventHandler(lbl_Click);

            lbl_C.Click += new EventHandler(lbl_Click);

            lbl_V.Click += new EventHandler(lbl_Click);

            lbl_B.Click += new EventHandler(lbl_Click);

            lbl_N.Click += new EventHandler(lbl_Click);

            lbl_M.Click += new EventHandler(lbl_Click);

            label44.Click += new EventHandler(label44_Click);

        }

将选中的数字或字母加入TextBox.Text的实现代码如下:

        void lbl_Click(object sender, EventArgs e)

        {

            Label l = (Label)sender;         

            textBox1.Text += l.Name.Substring(4, 1);

            textBox1.SelectionStart = textBox1.Text.Length;

        }

举一反三

根据本实例,读者可以实现以下程序。

  制作注册控件的程序。

  制作网络程序复制的程序。

1.8 

本节主要是对窗体的透明度、颜色渐变、背景及边框的相关技术进行讲解。在项目开发中窗体的设计会影响用户对软件的整体印象,所以窗体的效果要设计的美观一些。下面将介绍一些常用的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/829501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HarmonyOS】性能优化之低代码开发加载多张轮播图

【关键字】 HarmonyOS、低代码开发、Swiper组件、性能优化、分页加载 写在前面 目前使用DevEco Studio的低代码工具开发元服务时,通过实际测试发现,Swiper组件加载多张轮播图时加载显示耗时较长(实际测试网络状态一般的情况下显示耗时达到8…

好的CRM有哪些优点及功能?

市面上有很多CRM品牌,很多初次选型的企业没有深入的了解,不知道如何选择适合自己的CRM软件。小编认为,CRM选型无非就是靠谱和适合。这里有一款值得信赖的CRM软件推荐——Zoho CRM。 一、什么是Zoho CRM? Zoho CRM是一款SaaS云端…

只需十四步,从零开始掌握Python机器学习

推荐阅读(点击标题查看) 1、Python 数据挖掘与机器学习实践技术应用 2、R-Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践与拓展 3、最新基于MATLAB 2023a的机器学习、深度学习 4、【八天】“全面助力AI科研、教学与实践技能”夏令营…

计算机视觉与图形学-神经渲染专题-第一个基于NeRF的自动驾驶仿真平台

如今,自动驾驶汽车可以在普通情况下平稳行驶,人们普遍认识到,真实的传感器模拟将在通过模拟解决剩余的极端情况方面发挥关键作用。为此,我们提出了一种基于神经辐射场(NeRF)的自动驾驶模拟器。与现有作品相…

无人机自动返航的关键技术有哪些

无人机的广泛应用使得无人机自动返航技术变得至关重要。在各种应对意外情况的背景下,无人机自动返航技术的发展对确保无人机的安全,以及提高其应用范围具有重要意义。接下来,便为大家详细介绍无人机自动返航所运用到的关键技术。 一、定位与导…

Mysql on duplicate key update用法及优缺点

在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,一般思路是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql…

服务器的shell脚本

shell脚本语句可以执行linux的操作语句。 linux相当于网页,shell相当于java。可以解释编写执行逻辑。 shell的开头以:#!bin/sh 定义解析方式,不同的linuxe内核解释方式不同。大多数内核支持sh(bash)方式。 执行sh文件可…

C# Onnx Paddle模型 OCR识别

RapidOCR https://github.com/RapidAI/RapidOCR/blob/main/docs/README_zh.md 效果 项目 Demo(带模型)下载

spring-cache框架使用笔记

spring-cache框架使用笔记 什么是spring-cache框架 spring-cache是spring框架中的一个缓存抽象层, 它提供了一种简便的方式来集成不同的底层缓存实现, 如内存缓存(concurrentMap/ehcache/caffeine)/分布式缓存(redis/couchbase)等 它简化了在app中使用…

网络安全进阶学习第十课——MySQL手工注入

文章目录 一、MYSQL数据库常用函数二、MYSQL默认的4个系统数据库以及重点库和表三、判断数据库类型四、联合查询注入1、具体步骤(靶场演示):1)首先判断注入点2)判断是数字型还是字符型3)要判断注入点的列数…

O3DE的Pass

Pass介绍 Pass是具有输入和输出的渲染过程。 在最终渲染帧中看到的每个细节都是通过一系列Pass(前一个Pass的输出是下一个Pass的输入)计算出来的。Pass可以生成图像(作为纹理、缓冲区或渲染目标)。每个图像都包含关于场景的特定…

【话题】感觉和身边其他人有差距怎么办?也许自我调整很重要

每个人能力有限,水平高低不同,我们身在大环境里,虽然在同一个起跑线上,但是时间久了,你会发现,并越来越感觉到和身边其他人有了差距,慢慢的会有一定的落差感,怎么办呢!通…

Android手机信息获取(详细版)

经典好文推荐,通过阅读本文,您将收获以下知识点: 一、 获取手机基本信息(厂商、型号等参数) 二、设备信息获取实现图 三、 获取手机设备 宽、高、IMEI 信息 四、 获取手机厂商名、产品名、手机品牌、手机型号、主板名、设备名 五、获取手机硬件名、SDK版本、android版本 、语…

无代码开发:打破传统开发模式,引领数字化转型新方向

随着数字化转型的加速,企业对于高效、便捷的软件开发需求愈发旺盛。无代码开发作为一种新兴的软件开发模式,以其可视化、模块化的开发方式,为数字化转型提供了新的方向。本文将从无代码开发的优势、应用场景、如何实现等方面进行详细解读&…

中介者模式——协调多个对象之间的交互

1、简介 1.1、概述 如果在一个系统中对象之间的联系呈现为网状结构,如下图所示: 对象之间存在大量的多对多联系,将导致系统非常复杂,这些对象既会影响别的对象,也会被别的对象所影响,这些对象称为同事对…

配置root账户ssh免密登录并使用docker-machine构建docker服务

简介 Docker Machine是一种可以在多种平台上快速安装和维护docker运行环境,并支持多种平台,让用户可以在很短时间内在本地或云环境中搭建一套docker主机集群的工具。 使用docker-machine命令,可以启动、审查、停止、重启托管的docker 也可以…

揭示用户激活的价值:为什么产品经理应该关注

如果你在一家SaaS公司工作,你可能自诩对漏斗指标有很好的理解,你可能可以倒背如流——获取,用户激活,保留,推荐和收入。你甚至可能记得它们的出处,但是你对这些指标的理解到底有多深呢?你知道你…

node.js系列-多种方案教你在node程序中同时使用CommonJS 和 ES Module 混合开发最佳实践

前情提要 我们平时使用的npm 第三方包一般基于这两种规范开发的,很容易遇到一个项目里既有 CommonJS 又有 ES Module 的情况,那么我们应该如何解决这种CommonJS 和 ES Module 混合开发的问题呢? CommonJS是什么? 2009年&#x…

C++学习笔记总结练习--容器

容器 1 简介 新标准库的容器壁使用原始的数组实现的数据结构要快很多。经过了精心的优化。 确定使用哪种容器 除非有明确的理由,否则使用vector随机元素访问vector或deque容器中间插入或者插入元素list、forward_list头尾插入元素,使用deque可以在输入…