积极答复者
大量控件类似事件能否批量添加,如何快速实现或者如何判断要执行的是哪个控件

问题
-
一个界面大概有一个flowLayoutPanel,其中flowLayoutPanel中放了大概50个Label控件,每个空间都要执行以下代码:
private void Label1_MouseEnter(object sender, EventArgs e) { Label1.BackColor = Color.Blue; } private void Label1_MouseLeave(object sender, EventArgs e) { Label1.BackColor = Color.Transparent; }
如果50个Label一一添加以上两个事件,显得非常麻烦,代码也很长,请教大师们,有没有什么办法可以较为简单实现?比如说鼠标移入flowLayoutPanel,然后判断鼠标移入的是哪个label,然后执行这个Label的BackColor为Blue;移出flowLayoutPanel则时所有BackColor为Transparent。请高手赐教,谢谢!
努力~
- 已编辑 zjyh16 2013年5月27日 9:08
答案
-
Hi,
Try this,
private void Form1_Load(object sender, EventArgs e) { foreach (var labelItem in flowLayoutPanel1.Controls.OfType<Label>()) { labelItem.MouseEnter += Label1_MouseEnter; labelItem.MouseLeave += Label1_MouseLeave; } } private void Label1_MouseEnter(object sender, EventArgs e) { var labelItem = sender as Label; if(labelItem !=null) labelItem.BackColor = Color.Blue; } private void Label1_MouseLeave(object sender, EventArgs e) { var labelItem = sender as Label; if (labelItem != null) labelItem.BackColor = Color.Transparent; }
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
全部回复
-
Hi,
Try this,
private void Form1_Load(object sender, EventArgs e) { foreach (var labelItem in flowLayoutPanel1.Controls.OfType<Label>()) { labelItem.MouseEnter += Label1_MouseEnter; labelItem.MouseLeave += Label1_MouseLeave; } } private void Label1_MouseEnter(object sender, EventArgs e) { var labelItem = sender as Label; if(labelItem !=null) labelItem.BackColor = Color.Blue; } private void Label1_MouseLeave(object sender, EventArgs e) { var labelItem = sender as Label; if (labelItem != null) labelItem.BackColor = Color.Transparent; }
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
-
Hi,
Try this,
private void Form1_Load(object sender, EventArgs e) { foreach (var labelItem in flowLayoutPanel1.Controls.OfType<Label>()) { labelItem.MouseEnter += Label1_MouseEnter; labelItem.MouseLeave += Label1_MouseLeave; } } private void Label1_MouseEnter(object sender, EventArgs e) { var labelItem = sender as Label; if(labelItem !=null) labelItem.BackColor = Color.Blue; } private void Label1_MouseLeave(object sender, EventArgs e) { var labelItem = sender as Label; if (labelItem != null) labelItem.BackColor = Color.Transparent; }
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
努力~