我做了一个英文打字游戏,加了一个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 = "音乐:关"; }
}
}
}
下面是代码:
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 = "音乐:关"; }
}
}
}
{
if (button1.Text == "音乐:关")
{
axWindowsMediaPlayer1.Ctlcontrols.pause ();
button1.Text = "音乐:开"; }
else if (button1.Text == "音乐:开")
{
axWindowsMediaPlayer1.Ctlcontrols.play();
button1.Text = "音乐:关"; }
//这里加
你要输入的文字框的对象.Focus();//让其获得焦点
}
}
那就在开关音乐的最后一行写form1.focus();
{
if (button1.Text == "音乐:关")
{
axWindowsMediaPlayer1.Ctlcontrols.pause ();
button1.Text = "音乐:开"; }
else if (button1.Text == "音乐:开")
{
axWindowsMediaPlayer1.Ctlcontrols.play();
button1.Text = "音乐:关"; }可我每当在这里加这个Form.Focus();//都会有错误啊!错误 1 非静态的字段、方法或属性“System.Windows.Forms.Control.Focus()”要求对象引用
}郁闷了好几天了呢!!请大哥帮忙啊!!
Form1_KeyPress你在button同样补抓按键即可
button_KeyPress或者button有个属性是虾米ishitfocus()