namespace 打字游戏
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)//时钟
{
Label lab = new Label();
Random rm = new Random();
int result = rm.Next(0 ,this.Width);
int aTz = rm.Next(65,91);
lab.AutoSize = true;
lab.Location = new System.Drawing.Point(result,0);
lab.Name = Convert.ToChar(result).ToString();
//lab.Size = new System.Drawing.Size(41, 12);
lab.Text = Convert.ToChar(aTz).ToString();
lab.Font = new Font("新宋体",13);
lab.ForeColor = Color.White;
this.Controls.Add(lab);
//
Thread labelThread = new Thread(new ThreadStart(new MoveChar(lab,this).Move));
labelThread.Start();
} private void button1_Click(object sender, EventArgs e)//按钮控制时钟开关
{
if (timer1.Enabled==true)
{
timer1.Stop();
return;
}
if (timer1.Enabled == false)
{
timer1.Interval = 1000;
timer1.Start();
return;
}
} private void Form1_KeyPress(object sender, KeyPressEventArgs e)//键盘事件 --这里不起作用,不知道什么原因啊?好像根本没有运行过
{
MessageBox.Show(e.KeyChar.ToString());
foreach (Label labeobj in this.Controls)
{
if (labeobj == null)
{
break;
}
else if (e.KeyChar.ToString() == labeobj.Text)
{
labeobj.Dispose();
//Thread.CurrentThread.Abort();
this.Controls.Remove(labeobj);
}
}
} private void Form1_Load(object sender, EventArgs e)
{
this.BackColor = Color.Black;
}
}
public class MoveChar
{
private Label labTeam;
private Form formlab;
public MoveChar(Label lab, Form form)
{
labTeam = lab;
formlab = form; }
public void Move()
{
while (true)
{
Thread.Sleep(30);
labTeam.Invoke(new MethodInvoker(mm));
if (this.labTeam.Top >=this.formlab.Height)
{
this.labTeam.Invoke(new MethodInvoker(clr));
Thread.CurrentThread.Abort();
}
}
}
public void clr()
{
this.labTeam.Dispose();
} public void mm()
{
this.labTeam.Top += 1;
}
}
}=======
现在问题是:键盘事件不起作用,当label从上面飘下来的时候,我按相应的字母键,可它没反应
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)//时钟
{
Label lab = new Label();
Random rm = new Random();
int result = rm.Next(0 ,this.Width);
int aTz = rm.Next(65,91);
lab.AutoSize = true;
lab.Location = new System.Drawing.Point(result,0);
lab.Name = Convert.ToChar(result).ToString();
//lab.Size = new System.Drawing.Size(41, 12);
lab.Text = Convert.ToChar(aTz).ToString();
lab.Font = new Font("新宋体",13);
lab.ForeColor = Color.White;
this.Controls.Add(lab);
//
Thread labelThread = new Thread(new ThreadStart(new MoveChar(lab,this).Move));
labelThread.Start();
} private void button1_Click(object sender, EventArgs e)//按钮控制时钟开关
{
if (timer1.Enabled==true)
{
timer1.Stop();
return;
}
if (timer1.Enabled == false)
{
timer1.Interval = 1000;
timer1.Start();
return;
}
} private void Form1_KeyPress(object sender, KeyPressEventArgs e)//键盘事件 --这里不起作用,不知道什么原因啊?好像根本没有运行过
{
MessageBox.Show(e.KeyChar.ToString());
foreach (Label labeobj in this.Controls)
{
if (labeobj == null)
{
break;
}
else if (e.KeyChar.ToString() == labeobj.Text)
{
labeobj.Dispose();
//Thread.CurrentThread.Abort();
this.Controls.Remove(labeobj);
}
}
} private void Form1_Load(object sender, EventArgs e)
{
this.BackColor = Color.Black;
}
}
public class MoveChar
{
private Label labTeam;
private Form formlab;
public MoveChar(Label lab, Form form)
{
labTeam = lab;
formlab = form; }
public void Move()
{
while (true)
{
Thread.Sleep(30);
labTeam.Invoke(new MethodInvoker(mm));
if (this.labTeam.Top >=this.formlab.Height)
{
this.labTeam.Invoke(new MethodInvoker(clr));
Thread.CurrentThread.Abort();
}
}
}
public void clr()
{
this.labTeam.Dispose();
} public void mm()
{
this.labTeam.Top += 1;
}
}
}=======
现在问题是:键盘事件不起作用,当label从上面飘下来的时候,我按相应的字母键,可它没反应
protected override bool ProcessDialogKey(Keys keyData)
{
switch (keyData)
{
case Keys.Left:
break;
}
return base.ProcessDialogKey(keyData);
}
KeyPreview要设为True