【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】打字软件相关推荐

  1. 电脑练习打字软件_练习打字软件Master of Typing 3 Mac

    Master of Typing Mac版是Mac平台上一款非常受用户所喜爱的专业练习打字软件,如果您想要提升自己的打字速度,提升自己打字的准确率,想要练习盲打就试试Master of Typing ...

  2. 可以测试打字的手机软件,手机打字软件哪款好用?4款打字软件推荐

    文职工作人员们输入法软件是必不可少的,那么哪款输入法打字更快,更准确呢?下面小编为大家带来打字快的输入法软件推荐,希望对小伙伴们有所帮助 搜狗手机输入法: 搜狗输入法可谓是家喻户晓基本人人手机里都会有 ...

  3. 打字软件带倒计时_使用VueJS创建打字速度效果-第2部分:计时器和计分板

    打字软件带倒计时 Introduction In Part 1 - Create a Typing Speed Effect with VueJS We saw how to create a Typ ...

  4. Winform小软件 —— 摇奖机

    Winform小软件 -- 摇奖机 代码 using System; using System.Collections.Generic; using System.ComponentModel; us ...

  5. Mac专业练习打字软件:Master of Typing 3

    Master of Typing 3是Mac平台上一款非常受用户所喜爱的专业练习打字软件.Master of Typing 3 Mac版帮助需要经常使用电脑而打字速度不够的人学习快速打字.盲打等技巧. ...

  6. 自动打字软件完美解决不能复制粘贴(批改网)自动输入(金山打字)等问题

    自动打字软件完美解决不能复制粘贴(批改网)自动输入(金山打字)等问题 简单一个小软件完全免费 有问题欢迎咨询q3095563063一起讨论 源码主要基于Robot类 Robot类用于为测试自动化.自运 ...

  7. 【环境配置】DOSBox运行TT打字软件

    摘要:tt打字软件是dos年代(大约1995年前)流行的一款DOS环境下打字练习软件,本文解决了在windows环境下用DOSBox模拟DOS环境,运行TT打字软件的过程. 1 引言 大家习惯网络聊天 ...

  8. 中国cad工程 打字软件

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  9. 用Python写一个打字软件代码

    这是一个简单的打字软件代码示例: import pyautogui as pagdef type_text(text):pag.typewrite(text)# 调用函数输入文本 type_text( ...

  10. 基于JavaSwing开发开发的打字软件(疯狂打字通)+论文 课程设计 大作业源码

    基于JavaSwing开发开发的打字软件(疯狂打字通)+论文:   (大作业) 开发环境: Windows操作系统 开发工具: MyEclipse+Jdk 运行效果图: 基于JavaSwing开发开发 ...

最新文章

  1. c++ char4个字节_西门子PLC的TCP通讯(不同项目下)①--TSEND_C指令
  2. Cisco IOS版本命名规范
  3. Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】
  4. 响应式注意要添加“视口”约束标记---viewport
  5. 对人工智能问题的提问
  6. nginx配置vue项目500_一个Nginx部署多个vue前端项目总结
  7. c++ 类和对象的内存管理
  8. 把一个 ASP.NET 程序转换为了 Web Services
  9. HOOK大法实现不修改程序代码给程序添加功能
  10. 怎么让jsp中的按钮置灰不能使用_拆解按钮规范
  11. McAfee麦咖啡8.5企业版高级教程
  12. 宠物游戏系统 java
  13. 网易游戏(雷火)一、二、三交叉面
  14. Anaconda Prompt :python.exe - 无法找到入口,无法定位程序输入点
  15. The maximum number of tolerable server reconnection errors has been reached
  16. imac下修改本地hosts文件解决react项目中的跨域问题
  17. SSH整合,非常详细的SSH整合
  18. 计算机游戏是什么意思,端游是什么意思啊,吃鸡端游是什么意思啊
  19. MAVEN5分钟入门
  20. php 保留2位整数 补白,php图片处理类 缩放有补白效果

热门文章

  1. 微信小程序开源框架wxSortPickerView:微信小程序首字母排序选择表
  2. From.2.Apr.武汉-天兴洲-满地油菜花
  3. 本征频率有时也称为特征频率,固有频率,本振频率
  4. 让控件如此丝滑Scroller和VelocityTracker的API讲解与实战——Android高级UI
  5. VS2010 如何调试进(step into)项目引用的第三方开源源代码,比如Qt源码
  6. ip定压终端服务器是什么,IP网络功放 IP网络物联功放 IP网络联机功放 IP网络数字定压功放...
  7. win10-64位-汇编环境配置
  8. 区块链核心技术-P2P网络
  9. 媒体在计算机科学中的两种含义,多媒体技术应用思考与练习题.doc
  10. MS Office VBA(包括Excel VBA、Word VBA、Access VBA等)资料下载汇总