【WinForm】打字软件
【WinForm】打字软件
- 项目介绍
- 需求说明书
- UI设计
- 属性
- 实现代码以及解释
项目介绍
今天给大家讲解一下WinForm窗体应用程序之打字软件。WinForm打字软件是C#初学者的必经之路。通过这次学习,我们可以巩固C#的不少语法、属性,让我们深入学习编程的逻辑,让我们距C#大佬更进一步!
需求说明书
1、WINFORM窗体尺寸640*480;
2、窗体标题栏注明软件名称及开发人员信息;
3、用“多选一”按钮组,分别是代表字母(A-Z)、数字(0-9)、字母数字(A-Z,a-z,0-9),供用户选择打字的范围;
4、给出一个“开始”按钮,用户点击按钮后,打字练习开始,同时计时2分钟,开始倒计时,以分秒显示,倒计时为0时,用户不可再进行打字;
5、程序根据用户选择的“多选一”按钮组字符的范围产生相应的一组随机字符,字符长度为30,以蓝色、宋体、四号、半角模式显示在文本框中;
6、产生30个随机字符后,用户可以通过键盘在另一文本框中输入字符,与随机产生的字符一一对比,输入正确的字符,则原随机字符串中该字符颜色显示为“黑色”,不正确字符则该字符显示为“红色”,同时在界面左上方累计显示正确和错误的次数;
7、一行字符完成输入练习后,第二行自动随机产生出现,用户可继续练习打字;
8、需要在每段代码后面打上注释;
除以上要求外,可以自己完善拓展其功能,但功能必须和打字练习有关,可额外加10分。
UI设计
属性
控件类型 | 控件ID | 主要属性设置 | 说明 |
GroupBox | GbxModel | 无 | 训练模式GroupBox |
BbxGenerate | 无 | 生成区GroupBox | |
BbxInput | 无 | 输入区GroupBox | |
Label | lblLastTimeShow | 无 | “剩余时间”提示文字 |
lblCorrectShow | 无 | “正确数”提示文字 | |
lblWrongShow | 无 | “错误数”提示文字 | |
lblTIme | 无 | 剩余时间 | |
lblRight | 无 | 正确数 | |
lblWrong | 无 | 错误数 | |
RichTextBox | RtbGenerate | "BorderStyle"属性值为None | 生成框 |
RtbInput | "BorderStyle"属性值为None | 输入框 | |
RadioButton | RbtnA | “Text”:A-Z,a-z,0-9 | “RadioButton”的A-Z,a-z,0-9选择按钮 |
RtbnB | “Text”:A-Z,a-z | “RadioButton”的A-Z,a-z选择按钮 | |
RtbnC | “Text”:0-9 | “RadioButton”的0-9选择按钮 | |
Button | btnStart | “Text”:开始 | “开始“按钮 |
btnStop | “Text”:暂停 | “暂停“按钮 | |
btnHelp | “Text”:帮助 | “帮助“按钮 | |
btnReset | “Text”:重置 | “重置“按钮 |
实现代码以及解释
public partial class Form1 : Form{public Form1(){InitializeComponent();}public int time = 119;//设置总时间为120秒public int countRight, CountWrong;//定义错误计数和正确计数public int Right, Wrong;//定义正确数和错误数private void BtnRestart_Click(object sender, EventArgs e){this.Hide();//原先窗体隐藏Form1 form = new Form1();//实例化窗体form.ShowDialog();//窗体打开this.Close();//原先窗体关闭}private void RtbnA_CheckedChanged(object sender, EventArgs e){string[] a = new string[]{"Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m","0","1","2","3","4","5","6","7","8","9"};//罗列所有的字符Random ra = new Random();//生成一个随机数string s = "";//定义一个名字为s的空字符串int num;//定义一个用于存放数组下标的变量for (int i = 0; i <= 30; i++)//循环生成30个数{num = ra.Next(0, 61);//生成随机数范围为 0-61 共计62个字符s += a[num];//将这个字符不断赋值给s}RtbGenerate.Text = s;//把s赋值为生成框RtbGenerate.SelectAll();//选中生成框里的所有字符RtbGenerate.SelectionColor = Color.Blue;//将所有的颜色设置为蓝色}private void Rtbn2_CheckedChanged(object sender, EventArgs e){string[] a = new string[]{"Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m"};Random ra = new Random();//罗列所有的字符string s = "";//生成一个随机数int num;//定义一个名字为s的空字符串for (int i = 0; i <= 30; i++)//循环生成30个数{num = ra.Next(0, 51);//生成随机数范围为 0-61 共计62个字符s += a[num];//将这个字符不断赋值给s}RtbGenerate.Text = s;//把s赋值为生成框RtbGenerate.SelectAll();//选中生成框里的所有字符RtbGenerate.SelectionColor = Color.Blue;//将所有的颜色设置为蓝色}private void Rtbn3_CheckedChanged(object sender, EventArgs e)//同上{string[] a = new string[]{"0","1","2","3","4","5","6","7","8","9"};Random ra = new Random();string s = "";int num;for (int i = 0; i <= 30; i++){num = ra.Next(0, 9);s += a[num];}RtbGenerate.Text = s;RtbGenerate.SelectAll();RtbGenerate.SelectionColor = Color.Blue;}private void Form1_Load(object sender, EventArgs e)//窗体加载的时候{RtbGenerate.Enabled = false;//生成框不可用RtbInput.Enabled = false;//输入框不可用lblTime.Text = "2:00";//时间显示为2:00}private void BtnStart_Click(object sender, EventArgs e){timer1.Enabled = true;//设置计时器不可用BtnStart.Enabled = false;//一开始的开始键不可用RtbInput.Enabled = true;//输入框可以输入}private void timer1_Tick(object sender, EventArgs e)//timer的tick事件{time--;//时间减少int q, w;//定义q和w来存放分和秒q = time / 60;//分钟等于总时间除60w = time % 60;//秒等于总时间除60的余数string str = q.ToString() + ":" + w.ToString();//定义字符串并连接字符串lblTime.Text = str;//时间文本框显示连接好的字符}private void BtnStop_Click(object sender, EventArgs e){if (BtnStop.Text == "暂停")//当停止被按下{BtnStop.Text = "继续";//暂停变为继续timer1.Enabled = false;//计时器暂停}else if (BtnStop.Text == "继续")//当继续被按下{BtnStop.Text = "暂停";//开始变为暂停timer1.Enabled = true;//计时器打开}}private void RtbInput_TextChanged(object sender, EventArgs e){Wrong = Right = 0;//正确数和错误数清空RtbGenerate.Select(RtbInput.TextLength,1);//选择输入框输入字符长度后的一个字符RtbGenerate.SelectionColor = Color.Blue;//将颜色改为蓝色RtbGenerate.Select(0, 0);//不选择任何字符if (RtbInput.TextLength <= 30)//当输入框字符数小于等于30的时候{for (int i = 0; i < RtbInput.TextLength; i++)//for循环用于逐个字符进行比较{if (RtbGenerate.Text[i] != RtbInput.Text[i])//当两个同位置字符不相同的时候{RtbGenerate.Select(i, 1);//选中那个字符RtbGenerate.SelectionColor = Color.Red;//将他改为红色RtbGenerate.Select(i + 1, 0);//光标放在那个字符后并且不选中任何字符Wrong++;//正确数++}else{RtbGenerate.Select(i, 1);//否则两个字符相等,则正确RtbGenerate.SelectionColor = Color.Black;//将他改为黑色RtbGenerate.Select(i + 1, 0);//光标放在那个字符后并且不选中任何字符Right++;//错误数++}}}if (RtbInput.TextLength == 30)//当字符数等于30的时候{countRight += Right;//把正确数加给CountRightCountWrong += Wrong;//把错误数加给CountWrongRtbGenerate.Text = "";//清空生成框RtbInput.Text = "";//清空输入框if (RbtnA.Checked)//如果第一个被选中{RtbnA_CheckedChanged(null, null);//调用第一个生成方法}else if (RtbnB.Checked)//如果第二个被选中{Rtbn2_CheckedChanged(null, null);//调用第二个生成方法}else//否则Rtbn3_CheckedChanged(null, null);//调用第三个生成方法}lblRight.Text = Convert.ToString(Right + countRight);//正确提示框等于正确数lblWrong.Text = Convert.ToString(Wrong + CountWrong);//错误提示框等于错误数}private void BtnHelp_Click(object sender, EventArgs e){MessageBox.Show("有问题请联系作者!");//提示}}
【WinForm】打字软件相关推荐
- 电脑练习打字软件_练习打字软件Master of Typing 3 Mac
Master of Typing Mac版是Mac平台上一款非常受用户所喜爱的专业练习打字软件,如果您想要提升自己的打字速度,提升自己打字的准确率,想要练习盲打就试试Master of Typing ...
- 可以测试打字的手机软件,手机打字软件哪款好用?4款打字软件推荐
文职工作人员们输入法软件是必不可少的,那么哪款输入法打字更快,更准确呢?下面小编为大家带来打字快的输入法软件推荐,希望对小伙伴们有所帮助 搜狗手机输入法: 搜狗输入法可谓是家喻户晓基本人人手机里都会有 ...
- 打字软件带倒计时_使用VueJS创建打字速度效果-第2部分:计时器和计分板
打字软件带倒计时 Introduction In Part 1 - Create a Typing Speed Effect with VueJS We saw how to create a Typ ...
- Winform小软件 —— 摇奖机
Winform小软件 -- 摇奖机 代码 using System; using System.Collections.Generic; using System.ComponentModel; us ...
- Mac专业练习打字软件:Master of Typing 3
Master of Typing 3是Mac平台上一款非常受用户所喜爱的专业练习打字软件.Master of Typing 3 Mac版帮助需要经常使用电脑而打字速度不够的人学习快速打字.盲打等技巧. ...
- 自动打字软件完美解决不能复制粘贴(批改网)自动输入(金山打字)等问题
自动打字软件完美解决不能复制粘贴(批改网)自动输入(金山打字)等问题 简单一个小软件完全免费 有问题欢迎咨询q3095563063一起讨论 源码主要基于Robot类 Robot类用于为测试自动化.自运 ...
- 【环境配置】DOSBox运行TT打字软件
摘要:tt打字软件是dos年代(大约1995年前)流行的一款DOS环境下打字练习软件,本文解决了在windows环境下用DOSBox模拟DOS环境,运行TT打字软件的过程. 1 引言 大家习惯网络聊天 ...
- 中国cad工程 打字软件
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 用Python写一个打字软件代码
这是一个简单的打字软件代码示例: import pyautogui as pagdef type_text(text):pag.typewrite(text)# 调用函数输入文本 type_text( ...
- 基于JavaSwing开发开发的打字软件(疯狂打字通)+论文 课程设计 大作业源码
基于JavaSwing开发开发的打字软件(疯狂打字通)+论文: (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk 运行效果图: 基于JavaSwing开发开发 ...
最新文章
- c++ char4个字节_西门子PLC的TCP通讯(不同项目下)①--TSEND_C指令
- Cisco IOS版本命名规范
- Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】
- 响应式注意要添加“视口”约束标记---viewport
- 对人工智能问题的提问
- nginx配置vue项目500_一个Nginx部署多个vue前端项目总结
- c++ 类和对象的内存管理
- 把一个 ASP.NET 程序转换为了 Web Services
- HOOK大法实现不修改程序代码给程序添加功能
- 怎么让jsp中的按钮置灰不能使用_拆解按钮规范
- McAfee麦咖啡8.5企业版高级教程
- 宠物游戏系统 java
- 网易游戏(雷火)一、二、三交叉面
- Anaconda Prompt :python.exe - 无法找到入口,无法定位程序输入点
- The maximum number of tolerable server reconnection errors has been reached
- imac下修改本地hosts文件解决react项目中的跨域问题
- SSH整合,非常详细的SSH整合
- 计算机游戏是什么意思,端游是什么意思啊,吃鸡端游是什么意思啊
- MAVEN5分钟入门
- php 保留2位整数 补白,php图片处理类 缩放有补白效果
热门文章
- 微信小程序开源框架wxSortPickerView:微信小程序首字母排序选择表
- From.2.Apr.武汉-天兴洲-满地油菜花
- 本征频率有时也称为特征频率,固有频率,本振频率
- 让控件如此丝滑Scroller和VelocityTracker的API讲解与实战——Android高级UI
- VS2010 如何调试进(step into)项目引用的第三方开源源代码,比如Qt源码
- ip定压终端服务器是什么,IP网络功放 IP网络物联功放 IP网络联机功放 IP网络数字定压功放...
- win10-64位-汇编环境配置
- 区块链核心技术-P2P网络
- 媒体在计算机科学中的两种含义,多媒体技术应用思考与练习题.doc
- MS Office VBA(包括Excel VBA、Word VBA、Access VBA等)资料下载汇总