关于自定义控件。。。。 每次做用户输入界面都要拖label和textbox,嫌麻烦,于是自己弄个控件把lable和textbox组合起来做个控件,现在不知道怎么处理键盘事件,在用户设计界面把自定义控件拖进来后,键盘事件都没反应了,请问要怎么实现?好像要处理ProcessCmdKey事件,但不知道怎么入手。。大家帮帮忙啊谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 回3楼,就是keypress,keydown,keyup事件。。 这个我知道啊。可能我没说清楚,看看测试代码public partial class frmTest : Form { public frmTest() { InitializeComponent( ); } private void ulTextBox1_KeyPress( object sender , KeyPressEventArgs e ) { MessageBox.Show( e.KeyChar.ToString( ) ); // A } private void textBox1_KeyPress( object sender , KeyPressEventArgs e ) { MessageBox.Show( e.KeyChar.ToString( ) ); // B } }ulTextBox1是自定的控件(包含了一个标准的textbox),textBox1是标准的TextBox控件,现在的问题是 A 处的代码不会像B处一样能Show出来 在ulTextBox1里写(包含了一个标准的textbox)的事件 在自定义控件里定义一个char类型的全局变量,用来接收在ulTextBox1里的标准的textbox的KeyPress事件里的e.KeyChar你的这个private void ulTextBox1_KeyPress事件的key是自定义控件的key,不是里面包含的标准textbox的key。 参考代码:public partial class UlTextBox : UserControl{ // //假如如下label以及textBox是你自定义控件的成员, 正确处理方法应该这样... // Label label = new Label(); TextBox textBox = new TextBox(); public UlTextBox() { InitializeComponent(); //注册事件... textBox.KeyPress += new KeyPressEventHandler(textBox_KeyPress); } private void textBox_KeyPress(object sender, KeyPressEventArgs e) { base.OnKeyPress(e); //触发事件... }}然后尝试:public partial class frmTest : Form{ public frmTest() { InitializeComponent(); } private void ulTextBox1_KeyPress(object sender, KeyPressEventArgs e) { MessageBox.Show(e.KeyChar.ToString()); // A } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { MessageBox.Show(e.KeyChar.ToString()); // B }}大功告成. 恩恩,受到9楼benyouyong 的启发,一下醒悟了,直接在base里面调用下就可以了。。shinaterry咋现在才发捏???刚好在我想通的时候。。结贴。谢谢。 -_-!!! 必要时在UlTextBox获得焦点(激活)事件当中加上: textBox.Focus(); Bitmap赋值和拷贝的区别 c# 窗体编写中 注意点 细节 groupbox添加一个背景图后,怎样消除上面的一条横线? 随机取20个无重复数 查询日期的比较问题 关于mscomm接受信号的问题,大家来看看吧 [ 请问C#中如何连接MS SQL 数据库,我是新手,请详细点,谢谢! 谁有office 2000 developer光盘中带的Adoproperties.doc,急! 准备深入学习(.net c#)开发网站?想求一本可以看完就能做个像样网站的好书? 怎么样做到当点击一个按钮后,另一个控件显可视状态,并且不刷新。 有类似js的join那样的函数么
public partial class frmTest : Form
{
public frmTest()
{
InitializeComponent( );
}
private void ulTextBox1_KeyPress( object sender , KeyPressEventArgs e )
{
MessageBox.Show( e.KeyChar.ToString( ) ); // A
}
private void textBox1_KeyPress( object sender , KeyPressEventArgs e )
{
MessageBox.Show( e.KeyChar.ToString( ) ); // B
}
}
ulTextBox1是自定的控件(包含了一个标准的textbox),textBox1是标准的TextBox控件,现在的问题是 A 处的代码不会像B处一样能Show出来
用来接收在ulTextBox1里的标准的textbox的KeyPress事件里的e.KeyChar
你的这个private void ulTextBox1_KeyPress事件的key是自定义控件的key,
不是里面包含的标准textbox的key。
{
//
//假如如下label以及textBox是你自定义控件的成员, 正确处理方法应该这样...
//
Label label = new Label();
TextBox textBox = new TextBox();
public UlTextBox()
{
InitializeComponent();
//注册事件...
textBox.KeyPress += new KeyPressEventHandler(textBox_KeyPress);
}
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
base.OnKeyPress(e); //触发事件...
}
}然后尝试:public partial class frmTest : Form
{
public frmTest()
{
InitializeComponent();
} private void ulTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(e.KeyChar.ToString()); // A
} private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(e.KeyChar.ToString()); // B
}
}大功告成.
结贴。谢谢。