不管别人写得怎样,这是花2小时替我侄女写的。
欢迎程序员们加入群:63979707
欢迎高手们给出建议
跟贴接分!
using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace 指法
{
public partial class Form1 : Form
{
public class sLabel : Label
{
public sLabel()
{
this.Font = new Font("Courier New", 15);
this.Anchor = AnchorStyles.Left | AnchorStyles.Right;
this.Visible = false;
this.AutoSize = true;
this.Height = 27;
this.BorderStyle = BorderStyle.None;
}
}
public class sRichtextbox : RichTextBox
{
public sRichtextbox()
{
this.Font = new Font("Courier New", 15);
this.Height = 27;
this.ForeColor = Color.Black;
this.Anchor = AnchorStyles.Left | AnchorStyles.Right;
this.Visible = false;
this.ScrollBars = RichTextBoxScrollBars.None;
}
} public Form1()
{
InitializeComponent();
this.MinimumSize = new Size(597, 405);
this.StartPosition = FormStartPosition.CenterScreen;
} List<Label> lstLable = new List<Label>();
List<RichTextBox> lstRichTextBox = new List<RichTextBox>();
int NowWorldLengt = 0;
private void Form1_Resize(object sender, EventArgs e)
{
int intWidth = this.ClientSize.Width;
bool bVisible = false;
for (int i = 0; i < 30; i++)
{
int y = i * 55 +70; //27为toolstrip高度
if (y + 5 > this.ClientSize.Height)
{
ShowRichtextboxCount = i;
bVisible = false;
}
else
bVisible = true;
lstLable[i].Location = new Point(0, y-45);
lstLable[i].Width = intWidth;
lstLable[i].Visible = bVisible;
lstRichTextBox[i].Location = new Point(0,y-22);
lstRichTextBox[i].Width = intWidth;
lstRichTextBox[i].Visible = bVisible;
} switch (iCharacter)
{
case 1:
a_z(null, null);
break;
case 2:
A_z(null, null);
break;
case 3:
A_z_Num(null, null);
break;
}
} Timer timer = new Timer(); //计时器
ToolStripLabel tsLSpeed = new ToolStripLabel();
int iCharacter = 0;
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 30; i++)
{
sLabel a = new sLabel();
sRichtextbox b = new sRichtextbox();
lstLable.Add(a);
lstRichTextBox.Add(b);
this.Controls.Add(a);
this.Controls.Add(b);
b.Tag = i;
b.TextChanged += inputboxTextChange;
b.SelectionChanged += inputboxSelectionChange;
b.KeyDown += inputboxKeyDown;
b.GotFocus += inputFocus;
}
ToolStrip ts = new ToolStrip();
ToolStripButton tb1;
tb1=AddNewTsB("纯小写字母训练", ref ts);
tb1.Click += a_z; tb1 = AddNewTsB("大小写字母训练", ref ts);
tb1.Click += A_z;
tb1 = AddNewTsB("字母及数字训练", ref ts);
tb1.Click += A_z_Num; ToolStripSeparator tss1 = new ToolStripSeparator();
ts.Items.Add(tss1);
AddNewTsB("当前速度", ref ts);
ts.Items.Add(tsLSpeed);
this.Controls.Add(ts);
timer.Interval = 1000;
timer.Tick += CountTime;
Form1_Resize(null,null); }
ToolStripButton AddNewTsB(string strText,ref ToolStrip ts)
{
ToolStripButton tb1=new ToolStripButton();
tb1.Text = strText;
tb1.DisplayStyle = ToolStripItemDisplayStyle.Text;
ts.Items.Add(tb1);
return tb1;
} int RightKey = 0; //正确字符数量
int WrongKey = 0; //错误字符数量
int ElapseTime = 0;//使用时间数量(秒)
void a_z(object sender, EventArgs e)
{
getText('a', 'z');
iCharacter = 1;
}
void A_z(object sender, EventArgs e)
{
getText('A', 'z');
iCharacter = 2;
}
void A_z_Num(object sender, EventArgs e)
{
getText('0', 'z');
iCharacter = 3;
}
void getText(int miniValue, int maxValue)
{
//计算当前看得到的字符
NowWorldLengt = (this.ClientSize.Width - 10) / 12;
ElapseTime = 0;
RightKey = 0;
WrongKey = 0;
timer.Enabled = true;
int iTextLength = 0;
Random rd = new Random(Guid.NewGuid().GetHashCode());
Regex reg = new Regex(@"(\d|\w)");
Regex reg2 = new Regex(@"\w");
for (int l1 = 0; l1 < 30; l1++)
{
StringBuilder sb = new StringBuilder();
while (iTextLength < NowWorldLengt)
{
char c = (char)rd.Next(miniValue, maxValue);
if (miniValue == '0')
{
if (reg.Match(c.ToString()).Success && c!='_')
{
sb.Append(c);
iTextLength++;
Application.DoEvents();
}
}
else
{
if (reg2.Match(c.ToString()).Success && c != '_')
{
sb.Append(c);
iTextLength++;
}
}
}
iTextLength = 0;
lstLable[l1].Text = sb.ToString();
lstRichTextBox[l1].Clear();
}
lstRichTextBox[0].Focus();
}
void CountTime(object sender, EventArgs e)
{
ElapseTime++;
tsLSpeed.Text = "正确:" + RightKey.ToString() + " 错误:" + WrongKey.ToString() + " 费时:" + ElapseTime.ToString()+" 速度:" +(RightKey*60/ElapseTime).ToString()+"/分钟";
}
int NowIndex = -1; //当前正在输入的richtextbox
void inputFocus(object sender, EventArgs e)
{
RichTextBox b=(RichTextBox) sender;
NowIndex = (int)b.Tag;
}
void inputboxKeyDown(object sender, KeyEventArgs e)
{
if (e.Control || e.KeyValue==16)
return;
RichTextBox rb=(RichTextBox) sender;
int iDiff = 32;
if (Control.IsKeyLocked(Keys.CapsLock) && e.Shift)
iDiff *= -1;
else
{
if (e.Shift || Control.IsKeyLocked(Keys.CapsLock))
iDiff = 0;
}
if (e.KeyValue + iDiff == lstLable[NowIndex].Text[rb.SelectionStart])
{
rb.SelectionColor = Color.Black;
RightKey++;
}
else
{
rb.SelectionColor = Color.Red;
WrongKey++;
}
}
欢迎程序员们加入群:63979707
欢迎高手们给出建议
跟贴接分!
using System;
using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace 指法
{
public partial class Form1 : Form
{
public class sLabel : Label
{
public sLabel()
{
this.Font = new Font("Courier New", 15);
this.Anchor = AnchorStyles.Left | AnchorStyles.Right;
this.Visible = false;
this.AutoSize = true;
this.Height = 27;
this.BorderStyle = BorderStyle.None;
}
}
public class sRichtextbox : RichTextBox
{
public sRichtextbox()
{
this.Font = new Font("Courier New", 15);
this.Height = 27;
this.ForeColor = Color.Black;
this.Anchor = AnchorStyles.Left | AnchorStyles.Right;
this.Visible = false;
this.ScrollBars = RichTextBoxScrollBars.None;
}
} public Form1()
{
InitializeComponent();
this.MinimumSize = new Size(597, 405);
this.StartPosition = FormStartPosition.CenterScreen;
} List<Label> lstLable = new List<Label>();
List<RichTextBox> lstRichTextBox = new List<RichTextBox>();
int NowWorldLengt = 0;
private void Form1_Resize(object sender, EventArgs e)
{
int intWidth = this.ClientSize.Width;
bool bVisible = false;
for (int i = 0; i < 30; i++)
{
int y = i * 55 +70; //27为toolstrip高度
if (y + 5 > this.ClientSize.Height)
{
ShowRichtextboxCount = i;
bVisible = false;
}
else
bVisible = true;
lstLable[i].Location = new Point(0, y-45);
lstLable[i].Width = intWidth;
lstLable[i].Visible = bVisible;
lstRichTextBox[i].Location = new Point(0,y-22);
lstRichTextBox[i].Width = intWidth;
lstRichTextBox[i].Visible = bVisible;
} switch (iCharacter)
{
case 1:
a_z(null, null);
break;
case 2:
A_z(null, null);
break;
case 3:
A_z_Num(null, null);
break;
}
} Timer timer = new Timer(); //计时器
ToolStripLabel tsLSpeed = new ToolStripLabel();
int iCharacter = 0;
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 30; i++)
{
sLabel a = new sLabel();
sRichtextbox b = new sRichtextbox();
lstLable.Add(a);
lstRichTextBox.Add(b);
this.Controls.Add(a);
this.Controls.Add(b);
b.Tag = i;
b.TextChanged += inputboxTextChange;
b.SelectionChanged += inputboxSelectionChange;
b.KeyDown += inputboxKeyDown;
b.GotFocus += inputFocus;
}
ToolStrip ts = new ToolStrip();
ToolStripButton tb1;
tb1=AddNewTsB("纯小写字母训练", ref ts);
tb1.Click += a_z; tb1 = AddNewTsB("大小写字母训练", ref ts);
tb1.Click += A_z;
tb1 = AddNewTsB("字母及数字训练", ref ts);
tb1.Click += A_z_Num; ToolStripSeparator tss1 = new ToolStripSeparator();
ts.Items.Add(tss1);
AddNewTsB("当前速度", ref ts);
ts.Items.Add(tsLSpeed);
this.Controls.Add(ts);
timer.Interval = 1000;
timer.Tick += CountTime;
Form1_Resize(null,null); }
ToolStripButton AddNewTsB(string strText,ref ToolStrip ts)
{
ToolStripButton tb1=new ToolStripButton();
tb1.Text = strText;
tb1.DisplayStyle = ToolStripItemDisplayStyle.Text;
ts.Items.Add(tb1);
return tb1;
} int RightKey = 0; //正确字符数量
int WrongKey = 0; //错误字符数量
int ElapseTime = 0;//使用时间数量(秒)
void a_z(object sender, EventArgs e)
{
getText('a', 'z');
iCharacter = 1;
}
void A_z(object sender, EventArgs e)
{
getText('A', 'z');
iCharacter = 2;
}
void A_z_Num(object sender, EventArgs e)
{
getText('0', 'z');
iCharacter = 3;
}
void getText(int miniValue, int maxValue)
{
//计算当前看得到的字符
NowWorldLengt = (this.ClientSize.Width - 10) / 12;
ElapseTime = 0;
RightKey = 0;
WrongKey = 0;
timer.Enabled = true;
int iTextLength = 0;
Random rd = new Random(Guid.NewGuid().GetHashCode());
Regex reg = new Regex(@"(\d|\w)");
Regex reg2 = new Regex(@"\w");
for (int l1 = 0; l1 < 30; l1++)
{
StringBuilder sb = new StringBuilder();
while (iTextLength < NowWorldLengt)
{
char c = (char)rd.Next(miniValue, maxValue);
if (miniValue == '0')
{
if (reg.Match(c.ToString()).Success && c!='_')
{
sb.Append(c);
iTextLength++;
Application.DoEvents();
}
}
else
{
if (reg2.Match(c.ToString()).Success && c != '_')
{
sb.Append(c);
iTextLength++;
}
}
}
iTextLength = 0;
lstLable[l1].Text = sb.ToString();
lstRichTextBox[l1].Clear();
}
lstRichTextBox[0].Focus();
}
void CountTime(object sender, EventArgs e)
{
ElapseTime++;
tsLSpeed.Text = "正确:" + RightKey.ToString() + " 错误:" + WrongKey.ToString() + " 费时:" + ElapseTime.ToString()+" 速度:" +(RightKey*60/ElapseTime).ToString()+"/分钟";
}
int NowIndex = -1; //当前正在输入的richtextbox
void inputFocus(object sender, EventArgs e)
{
RichTextBox b=(RichTextBox) sender;
NowIndex = (int)b.Tag;
}
void inputboxKeyDown(object sender, KeyEventArgs e)
{
if (e.Control || e.KeyValue==16)
return;
RichTextBox rb=(RichTextBox) sender;
int iDiff = 32;
if (Control.IsKeyLocked(Keys.CapsLock) && e.Shift)
iDiff *= -1;
else
{
if (e.Shift || Control.IsKeyLocked(Keys.CapsLock))
iDiff = 0;
}
if (e.KeyValue + iDiff == lstLable[NowIndex].Text[rb.SelectionStart])
{
rb.SelectionColor = Color.Black;
RightKey++;
}
else
{
rb.SelectionColor = Color.Red;
WrongKey++;
}
}
解决方案 »
- 关于集合的类型
- 关于Form 闪屏的问题 求解..
- C#用Microsoft.DirectX.AudioVideoPlayback做播放器
- c#中如何给Opacity属性赋值呢??
- C#有什么好的入门书籍?望大虾们推荐一下。
- 我是初学者。我想学习编程,请问我应该怎么学!要学哪些知识,按什么顺序?谢谢!
- asp.net(C#)中控件label的值写入ini
- C# 利用NPOI 将二维数组导入到Excel中
- 如何从XML文件中选择性的读数据??
- 树的问题
- Object reference not set to an instance of an object错误,请高手相助
- OracleDataAdapter.Fill(DataSet)方法无法填充数据
void inputboxSelectionChange(object sender, EventArgs e)
{
RichTextBox rt = (RichTextBox)sender;
rt.SelectionStart = rt.Text.Length;
}
int ShowRichtextboxCount = -1; //一共显示出来的输入框数
void inputboxTextChange(object sender, EventArgs e)
{
if (lstRichTextBox[NowIndex].Text.Length == NowWorldLengt)
{
++NowIndex;
if (NowIndex == ShowRichtextboxCount)
{
timer.Enabled = false;
if (MessageBox.Show("恭喜你完成本次练习!", "恭喜", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
switch (iCharacter)
{
case 1:
a_z(null, null);
break;
case 2:
A_z(null, null);
break;
case 3:
A_z_Num(null, null);
break;
}
}
return;
}
lstRichTextBox[NowIndex].Focus();
}
}
}
}
i dig three