读书人

教此有有更好的法?解决方法

发布时间: 2012-03-08 13:30:13 作者: rapoo

教,此有有更好的法?
一WinForm有很多TextBox,需要使TextBox得到焦背景色成色,我有理方法:
1:每一TextBox都生一textBox_Enter事件理(重代太多,有十TextBox)
2:自己一控件理,承TextBox.
教高手有更好的法?
祝新年快,恭喜!

[解决办法]
楼主自己都知道怎么做了:还用得着小弟们说了吗?
1:每一TextBox都生一textBox_Enter事件理(重代太多,有十TextBox)
这里也可以把所有TextBox的事件指向一个Enter事件不就可以不用重复的代码了吗?

2:自己一控件理,承TextBox.
这个也好啊。我经常这样用的,而且这样做会显得你的程序更OO一点
其实楼主都知道的了,只是要小弟们举双手赞成吧。哈哈~~
[解决办法]
用方法2更好
[解决办法]
要是我用第一种
但是只要一个事件处理程序
大家都指过来
处理的时候
TextBox myBox = sender as TextBox;
myBox.BackColor = ...
[解决办法]
//药到病除

public Form1()
{
InitializeComponent();
foreach (Control vControl in Controls)
{
if (vControl is TextBox)
{
((TextBox)vControl).Enter += new EventHandler(TextBox_Enter);
((TextBox)vControl).Leave += new EventHandler(TextBox_Leave);
}
}
}
private void TextBox_Enter(object sender, EventArgs e)
{
((TextBox)sender).BackColor = Color.Red;
}
private void TextBox_Leave(object sender, EventArgs e)
{
((TextBox)sender).BackColor = SystemColors.Window;
}

[解决办法]
private void mytextBox_Enter(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
tb.BackColor = Color.Red;
}
private void mytextBox_Leave(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
tb.BackColor = Color.White;
}
private void setmyEvent(Control c)
{
if( c is TextBox)
{
c.Enter += new System.EventHandler(this.mytextBox_Enter);
c.Leave += new System.EventHandler(this.mytextBox_Leave);
}
for (int i = 0; i < c.Controls.Count; i++)
{
setmyEvent(c.Controls[i]);
}

}
private void Form1_Load(object sender, EventArgs e)
{
setmyEvent(this);

}

[解决办法]
up

读书人网 >C#

热点推荐