我先做一个Form1主窗体,上面放两个label1和label2,当点击键盘上的 1 键 弹出Form2窗体,当点击键盘上的 2 键 弹出Form3窗体,
主要代码如下:
Form2 f2;
Form3 f3;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{ if (e.KeyValue == 49)
label1_Click(this,e);
if (e.KeyValue == 50)
label2_Click(this,e)
}
private void label1_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
private void label2_Click(object sender, EventArgs e)
{
f3 = new Form3(f2);
f3.Show();
}
这么做调试可以成功.
但是当我想在Form1窗体中 加一个BUTTON后, 当点键盘上的 3键 关闭整个窗体.
Form2 f2;
Form3 f3;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{ if (e.KeyValue == 49)
label1_Click(this,e);
if (e.KeyValue == 50)
label2_Click(this,e)
if (e.KeyValue == 51)
button1_Click(this,e)
}
private void label2_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
private void label3_Click(object sender, EventArgs e)
{
f3 = new Form3(f2);
f3.Show();
}
private void button1_Click(object sender, EventArgs e)
{
this.close;
}
这样做的时候,运行后,按键盘上的 1 2 等键程序没反应.高手来指导啊.谢谢
主要代码如下:
Form2 f2;
Form3 f3;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{ if (e.KeyValue == 49)
label1_Click(this,e);
if (e.KeyValue == 50)
label2_Click(this,e)
}
private void label1_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
private void label2_Click(object sender, EventArgs e)
{
f3 = new Form3(f2);
f3.Show();
}
这么做调试可以成功.
但是当我想在Form1窗体中 加一个BUTTON后, 当点键盘上的 3键 关闭整个窗体.
Form2 f2;
Form3 f3;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{ if (e.KeyValue == 49)
label1_Click(this,e);
if (e.KeyValue == 50)
label2_Click(this,e)
if (e.KeyValue == 51)
button1_Click(this,e)
}
private void label2_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
private void label3_Click(object sender, EventArgs e)
{
f3 = new Form3(f2);
f3.Show();
}
private void button1_Click(object sender, EventArgs e)
{
this.close;
}
这样做的时候,运行后,按键盘上的 1 2 等键程序没反应.高手来指导啊.谢谢
if (e.KeyValue == 51)
button1_Click(this,e) 这句可以不要直接将button1_Click加到button1上点击的时候就会执行click事件的
f2.Show(); 不行吗?看下你的代码 private void Form1_KeyDown(object sender, KeyEventArgs e)
{ if (e.KeyValue == 49)
label1_Click(this,e);
if (e.KeyValue == 50)
label2_Click(this,e)
if (e.KeyValue == 51)
button1_Click(this,e)
}
private void label2_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
private void label3_Click(object sender, EventArgs e)
{
f3 = new Form3(f2);
f3.Show();
}
和你的要求不符...
label1_Click(null,null);
if (e.KeyValue == 50)
label2_Click(null,null)
if (e.KeyValue == 51)
button1_Click(null,null)
下面用的是label2和label3
当然没用啦……
private void label2_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
不知道你加上lable事件什么意思?冗余!直接调用的的btn的事件,在btn事件中写东西就可以了里面写上上cordrol有提示的遍历整个窗体,先判断窗体是否打开,activeForm,如果是打开的就关闭,就可以了!不用加那么多冗余的代码!
你的OOP思想没有领会!注意多家学习,程序员是要领会思想的!OK