焦点移动的问题
我做了一个英文打字游戏,加了一个button控件控制游戏的音乐,可是一按了button控件我的游戏打字就不行了!按了键盘,那字母就是没有什么反应,我想那个应该是焦点移动的问题,可具体怎样弄我就不懂了!在网上找资料弄了半天就是弄不出来!请各位兄弟姐妹帮个忙咯!谢谢。。
下面是代码:
using System;
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
{
Random rnd = new Random();
Point[] p = new Point[6];//定义成成员变量,所有方法都可以使用
int a = 6, b = 0,k=0;//z 为出现字符总数,q 表示击中的个数
Label[] lab = new Label[6];//定义数组用来存放标签 其中数组的定义可以是 类名[] 数组名 =new 类名[];
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void label2_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = "最炫民族风.mp3";
//初始化标签的位置
p[0] = new Point(100, 100);
p[1] = new Point(300,300);
p[2] = new Point(500,200);
p[3] = new Point(700,450);
p[4] = new Point(900,350);
p[5] = new Point(1100,600);
//对Label数组进行初始化
lab[0] = label1;
lab[1] = label2;
lab[2] = label3;
lab[3] = label4;
lab[4] = label5;
lab[5] = label6;
//Random rnd = new Random();
for (int i = 0; i < 6; i++)
{//生成A-Z以及1-8的ASCII值
rang (i);
}
}
private void rang(int i)
{
//生成A-Z以及1-8的ASCII值
//Random rnd = new Random();
int r = rnd.Next(48, 91);
while (57 < r && r < 65)
{
r = rnd.Next(48, 91);
}
char c = (char)r;
lab[i].Text = c.ToString();
lab[i].Location = p[i];
}
private void label3_Click(object sender, EventArgs e)
{
}
private void label4_Click(object sender, EventArgs e)
{
}
private void timer1_Tick(object sender, EventArgs e)
{
p[0].Y += 10;
p[1].Y += 5;
p[2].Y += 8;
p[3].Y += 2;
p[4].Y += 6;
p[5].Y += 7;
//重新定位标签
for (int i = 0; i < 6; i++)
{
lab [i].Location =p[i];
}
for (int i = 0; i < 6; i++)
{
if (p[i].Y >= Height)
{
p[i].Y = 0;
rang(i);
a++;
k++;
}
}
}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
string ste= Char . ToUpper(e.KeyChar ).ToString ();
for (int i=0;i<6;i++)
{
if (ste == lab[i].Text)
{
lab[i].Visible = false;
pictureBox1.Visible = true;
pictureBox1.Location = p[i];
p[i].Y = 0;
b++;
rang(i);
a++;
k++;
break;
}
}
timer2.Enabled = true;
}
private void timer2_Tick(object sender, EventArgs e)
{
for (int i = 0; i < 6; i++)
{
lab[i].Visible = true;
}
pictureBox1.Visible = false;
timer2.Enabled = false;
}
private void label5_Click(object sender, EventArgs e)
{
}
private void timer3_Tick(object sender, EventArgs e)
{
float c = (float)(b) / a * 100;
int d = k-b;
label7.Text = "字母、数字出现的个数:" + a.ToString();
label8.Text = "打中的正确个数:" + b.ToString();
label9 .Text ="错误的个数:"+d.ToString ();
label10.Text = "打中的正确率:" + c.ToString()+"%";
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == "音乐:关")
{
axWindowsMediaPlayer1.Ctlcontrols.pause ();
button1.Text = "音乐:开";
}
else if (button1.Text == "音乐:开")
{
axWindowsMediaPlayer1.Ctlcontrols.play();
button1.Text = "音乐:关";
}
}
}
}
[解决办法]
设置button的Focusable为False
[解决办法]
那就Form1.Focus();