C# 怎样获得动态生成的按钮的点击事件

xinyuetonghua 2010-10-14 10:08:15
比如一个面板Panel上动态生成14个按钮,分两页显示,一页显示9个,做个翻页按钮,另外一页显示其他几个
并注册它的点击事件处理,我怎么用键盘按1,就触发第一个按钮的点击事件处理程序,按2就触发地2个按钮的触发事件,以此类推,这个功能怎么实现啊,请教高手!!!!
...全文
499 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxiaoxiang 2011-07-23
  • 打赏
  • 举报
回复
Buttn btn=(Buttn)sender
则当前点击的按钮即为要获取事件的按钮
Forever-Remerber 2010-10-16
  • 打赏
  • 举报
回复
判断那个assica码值就行
然后再Buttn按钮中的Click时间中写程序
wuyq11 2010-10-15
  • 打赏
  • 举报
回复
private void Form2_KeyDown(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (!(Char.IsNumber(e.KeyChar)))
{
Button btn =this.Controls("btn"+e.KeyChar) as Button;
btn.PerFormClick();
}
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.D0: case Keys.D1: case Keys.D2: case Keys.D3: case Keys.D4:
case Keys.D5: case Keys.D6: case Keys.D7: case Keys.D8: case Keys.D9:
// 大键盘的数字
text.Text += (char)keyData;
return true;
case Keys.NumPad0: case Keys.NumPad1: case Keys.NumPad2: case Keys.NumPad3: case Keys.NumPad4:
case Keys.NumPad5: case Keys.NumPad6: case Keys.NumPad7: case Keys.NumPad8: case Keys.NumPad9:
// 小键盘的数字
text.Text += (char)(keyData - Keys.NumPad0 + '0');
return true;
case default:
return true;

}
return base.ProcessCmdKey (ref msg, keyData);
}
xinyuetonghua 2010-10-15
  • 打赏
  • 举报
回复
不太对啊,有没有人继续回答啊
linjs137 2010-10-14
  • 打赏
  • 举报
回复
Button.PerformClick()
or
Button_Click(null,null)
xinyuetonghua 2010-10-14
  • 打赏
  • 举报
回复
winfrom程序一启动,首先获得光标的是button,而不是form啊,那不是要将每个button注册键盘事件啊,那不很多重复的代码啊,是不是这样的啊,有简单点的吗


private void button1_Click(object sender, EventArgs e)
{
if (e.KeyCode == Keys.D1)
{

}
if (e.KeyCode == Keys.D2)
{

}
if (e.KeyCode == Keys.D3)
{

}

}

private void button2_Click(object sender, EventArgs e)
{
if (e.KeyCode == Keys.D1)
{

}
if (e.KeyCode == Keys.D2)
{

}
if (e.KeyCode == Keys.D3)
{

}

}
top_wo 2010-10-14
  • 打赏
  • 举报
回复
要实现通过键盘来接收你的事件,需要给这个窗体注册一个KeyUp事件,在这个事件里进行判断你按的是哪个键,然后再调用响应的按钮注册的事件即可。
private void MainForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1)
{

}
}
sprc_lcl 2010-10-14
  • 打赏
  • 举报
回复
//例:
this.KeyPreview = true;
this.KeyDown += new KeyEventHandler(Form2_KeyDown);
}

void Form2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.NumPad4 || e.KeyCode == Keys.D4)
{
this.button4.PerformClick();
}
}
bwguang 2010-10-14
  • 打赏
  • 举报
回复
在代码中手动将时间处理函数与按钮关联就可以了。

button.Click += click;

click是事件处理函数。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧