C# 如何使多个label具有同一功能
本人刚开始自学,遇到一个问题,请各位前辈指点这是一个选择栏,科目都是用的label控件,我的意思是 鼠标放到一个label上字体就变粗
鼠标离开之后就变回原样。
所以我在一个label的事件中写了如下代码:
private void label2_MouseHover(object sender, EventArgs e)
{
Font f = new Font( "微软雅黑", 11,FontStyle.Bold);
label2.Font = f;
}
private void label2_MouseLeave(object sender, EventArgs e)
{
Font f = new Font("微软雅黑", 11);
label2.Font = f;
}
算是实现了,这个功能。但是还有很多个这样的控件,我想问有没有简单的方法,让很多label都具有这样的功能?是不是用控件类啊(这个没搞懂) C# LABEL WINFORM --------------------编程问答-------------------- 继承
我感觉多说一个字都是浪费 --------------------编程问答-------------------- 继承,多一个字都浪费 --------------------编程问答-------------------- 把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx += label2_MouseHover;
label2.xxx += label2_MouseHover;
...
labelN.xxx += label2_MouseHover;
sender参数就是要处理的label对象 --------------------编程问答--------------------
写成一个label 反正你这个排版是可以这样弄的 --------------------编程问答-------------------- 语文(两个空格)数学(两个空格).... --------------------编程问答-------------------- 同时顶3楼 --------------------编程问答-------------------- 写个自定义的label。
这个也不错,自己选个喜欢的方式吧
--------------------编程问答-------------------- 可以继承,也可以绑定同一个事件。 --------------------编程问答--------------------
你的不错,你的可以复用 --------------------编程问答--------------------
把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx += label2_MouseHover;
label2.xxx += label2_MouseHover;
...
labelN.xxx += label2_MouseHover;
sender参数就是要处理的label对象
先谢谢版主,我初学,“把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个”
这句话我没理解,指的事哪一个事件啊 --------------------编程问答-------------------- 指向同一个事件比较简单 C#这么fashion 小小事 没必要继承 --------------------编程问答--------------------
把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx += label2_MouseHover;
label2.xxx += label2_MouseHover;
...
labelN.xxx += label2_MouseHover;
sender参数就是要处理的label对象
先谢谢版主,我初学,“把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个”
这句话我没理解,指的事哪一个事件啊
把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx += label2_MouseHover;
label2.xxx += label2_MouseHover;
...
labelN.xxx += label2_MouseHover;
sender参数就是要处理的label对象
++ --------------------编程问答-------------------- 绑定同一个事件 --------------------编程问答--------------------
把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx += label2_MouseHover;
label2.xxx += label2_MouseHover;
...
labelN.xxx += label2_MouseHover;
sender参数就是要处理的label对象
++
之后再那里写代码 --------------------编程问答-------------------- 继承Label 控件,重写MouseHover。 --------------------编程问答-------------------- label[] labs = new label[]{label1,label2,label3,label4,label5,label6}
然后循环。。。给同样的属性,绑定同一个事件 --------------------编程问答--------------------
可以继承,也可以绑定同一个事件。
我能说WPF实现这些都不用敲代码吗?
我来支持下WPF,一个样式全搞定~ --------------------编程问答-------------------- 两种办法:
1、长远考虑,做一个累似Lable控件
2、单独写一个Lable这种功能的实现类,用到的地方就调用这个类下的对应方法。 --------------------编程问答-------------------- 补充 WinForm的话是可以直接改写Lable类的 --------------------编程问答-------------------- 3楼方法不好,如果是动太加载或者就像楼主所说太多了,都要去点事件。上面有人说的继承,是说的你写一个lable的控件, --------------------编程问答--------------------
按住 ctrl 键 之后 选中 你 的lable 选好之后 找到 鼠标移动事件 双击
之后再那里写代码
我选选择了label13、label14和label15 双击 MouseHover事件
就添加在了 label13的 MouseHover中
代码如下
private void label13_MouseLeave(object sender, EventArgs e)
{
Font f = new Font("微软雅黑", 11);
label13.Font = f;
label14.MouseHover += label13_MouseHover;
label15.MouseHover += label13_MouseHover;
}
结果鼠标放在14和15上 都是13变粗
--------------------编程问答-------------------- 让你的所有Lable都绑定同一事件上面
在其他Lable选择MouseHover事件的时候 不要双击 旁边会有下拉框
拉下来 选择label2_MouseHover 就绑定到了同一事件 --------------------编程问答--------------------
让你的所有Lable都绑定同一事件上面
在其他Lable选择MouseHover事件的时候 不要双击 旁边会有下拉框
拉下来 选择label2_MouseHover 就绑定到了同一事件
就是一个绑定事件的问题 --------------------编程问答-------------------- --------------------编程问答-------------------- 事件绑定:
任意添加一个Label的_MouseHover事件。在其他Label的_MouseHover事件的下拉列表中,选择第一个的_MouseHover事件。
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label3_MouseEnter(object sender, EventArgs e)
{
MessageBox.Show("");
BB(sender);
}
private void BB(object sender)
{
for (int i = 0; i < 3; ++i)
{
foreach (Control ss in this.Controls)
{
if (ss.GetType() == typeof(Label)) //按类型查找
{
if (ss == sender)
{
ss.Font = new Font("宋体", 20);
}
}
}
}
}
}
}
--------------------编程问答-------------------- 自定义控件OR绑定事件 --------------------编程问答--------------------
让你的所有Lable都绑定同一事件上面
在其他Lable选择MouseHover事件的时候 不要双击 旁边会有下拉框
拉下来 选择label2_MouseHover 就绑定到了同一事件
就是一个绑定事件的问题
private void label13_MouseLeave(object sender, EventArgs e)
{
Font f = new Font("微软雅黑", 11);
label13.Font = f;
label14.MouseHover += label13_MouseHover;
label15.MouseHover += label13_MouseHover;
}
是这样写吗 --------------------编程问答--------------------
让你的所有Lable都绑定同一事件上面
在其他Lable选择MouseHover事件的时候 不要双击 旁边会有下拉框
拉下来 选择label2_MouseHover 就绑定到了同一事件
就是一个绑定事件的问题
private void label13_MouseLeave(object sender, EventArgs e)
{
Font f = new Font("微软雅黑", 11);
label13.Font = f;
label14.MouseHover += label13_MouseHover;
label15.MouseHover += label13_MouseHover;
}
是这样写吗
楼主问: 1+1等于几啊
有人回答 : 俩
有人回答 : 等于2
.......
楼主琢磨了一下问:假如数学老师没死, 1+1就等于2是么?
补充:.NET技术 , C#