黑马程序员技术交流社区
标题:
winform程序中,不同的textBox能否调用同一个方法?
[打印本页]
作者:
余晓亮
时间:
2012-4-12 10:32
标题:
winform程序中,不同的textBox能否调用同一个方法?
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9')//对照ASCII码表条件之外的字符不是数字
{
e.Handled = true;//Handled属性为true,用户不能输入条件之外的字符
}
if(textBox1.SelectionStart==0&&e.KeyChar=='0')
{
e.Handled = true;
}
if(e.KeyChar==8)//BS 退格键对应8
{
e.Handled = false;//Handled为false,用户能输入退格键
}
}
老师讲如果另一个textbox要使用这个方法,需要父类转回子类
TextBox textbox=sender as TextBox;
不过我没有这行代码,另一个textBox控件同样能调用这个方法。
这其中有什么问题吗?
1.jpg
(15.73 KB, 下载次数: 31)
下载附件
2012-4-12 10:27 上传
作者:
胡振超
时间:
2012-4-12 12:06
可以调用,但是 if(
textBox1.
SelectionStart==0&&e.KeyChar=='0')这句就不会作用在另一个控件上,注意粗体标出来的地方
作者:
余晓亮
时间:
2012-4-12 12:30
if(textBox1.SelectionStart==0&&e.KeyChar=='0')刚才还能作用到另一个控件上 现在又不能了。。。。
作者:
徐瑞
时间:
2012-4-12 12:46
if(textBox1.SelectionStart==0&&e.KeyChar=='0')
{
e.Handled = true;
}
但下一个文本框textbox2 就可以在最开始输入0了,视频里应该有讲
作者:
黄国钢
时间:
2012-4-12 21:45
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
TextBox
textbox
=sender as TextBox;
{
if (e.KeyChar < '0' || e.KeyChar > '9')//对照ASCII码表条件之外的字符不是数字
{
e.Handled = true;//Handled属性为true,用户不能输入条件之外的字符
}
if(
textBox1
.SelectionStart==0&&e.KeyChar=='0')
{
e.Handled = true;
}
if(e.KeyChar==8)//BS 退格键对应8
{
e.Handled = false;//Handled为false,用户能输入退格键
}
}
---------------------------------------------------------------------------------
上面TextBox1要改为TextBox,因为sender传过来的就是触发控件的对象,当多个textbox控件共用一个方法时,
传过来的对象也就不同,就要定义一个textbox类型textbox,把sender转成textbox类型,也就是父类object转换子类textbox。
这时,在方法里就不能用某个控件名"textbox1"了,应改成textbox,这个textbox指的是触发的控件,而不是某个控件。
如果你写的是textbox1,那么就只有textbox1那个控件才会有事件触发效果。
作者:
★心秒★
时间:
2012-4-13 09:17
调用当然可以调用,但是你其它来调用这个事件的控件就实现不了下面的这句话
if(textBox1.SelectionStart==0&&e.KeyChar=='0')
{
e.Handled = true;
}
老师讲了,你想要让一个事件用于关于多个控件对象,你就得不能写死对象名,而sender就表示调用的那个对象,我们就可以把sender转化为我们调用该事件的控件类型,这样我们就不用担心是谁调用了,这样是该类型的控件类型,就都可以使用该事件。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2