当前位置:编程学习 > C#/ASP.NET >>

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。

这个也不错,自己选个喜欢的方式吧
引用 3 楼 bdmh 的回复:
把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx +=  label2_MouseHover;
label2.xxx +=  label2_MouseHover;
...
labelN.xxx +=  label2_MouseHover;
sender参数就是要处理的label对象
--------------------编程问答-------------------- 可以继承,也可以绑定同一个事件。 --------------------编程问答--------------------
引用 7 楼 UR_Not_Alone 的回复:
写个自定义的label。

这个也不错,自己选个喜欢的方式吧
Quote: 引用 3 楼 bdmh 的回复:

把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx +=  label2_MouseHover;
label2.xxx +=  label2_MouseHover;
...
labelN.xxx +=  label2_MouseHover;
sender参数就是要处理的label对象

你的不错,你的可以复用 --------------------编程问答--------------------
引用 3 楼 bdmh 的回复:
把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx +=  label2_MouseHover;
label2.xxx +=  label2_MouseHover;
...
labelN.xxx +=  label2_MouseHover;
sender参数就是要处理的label对象


先谢谢版主,我初学,“把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个”
这句话我没理解,指的事哪一个事件啊 --------------------编程问答-------------------- 指向同一个事件比较简单 C#这么fashion 小小事 没必要继承  --------------------编程问答--------------------
引用 10 楼 u010687707 的回复:
Quote: 引用 3 楼 bdmh 的回复:

把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx +=  label2_MouseHover;
label2.xxx +=  label2_MouseHover;
...
labelN.xxx +=  label2_MouseHover;
sender参数就是要处理的label对象


先谢谢版主,我初学,“把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个”
这句话我没理解,指的事哪一个事件啊
就是创建每个label时都加两个事件,但是事件处理只需写一次,全部用你写好的那两个。 --------------------编程问答-------------------- 楼猪 为毛要选着困难模式  你的科目显示再多 其实是同样一个东西  绑定一个 直接动态获取 就好了啊 --------------------编程问答-------------------- 我能说WPF实现这些都不用敲代码吗? --------------------编程问答--------------------
引用 3 楼 bdmh 的回复:
把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx +=  label2_MouseHover;
label2.xxx +=  label2_MouseHover;
...
labelN.xxx +=  label2_MouseHover;
sender参数就是要处理的label对象

++ --------------------编程问答-------------------- 绑定同一个事件 --------------------编程问答--------------------
引用 15 楼 l397870376 的回复:
Quote: 引用 3 楼 bdmh 的回复:

把所有lable的事件都指向同I个事件,可以在事件列表中选择为同一个,也可以动态绑定
label1.xxx +=  label2_MouseHover;
label2.xxx +=  label2_MouseHover;
...
labelN.xxx +=  label2_MouseHover;
sender参数就是要处理的label对象

++
 求代码啊?具体怎么写 --------------------编程问答-------------------- 按住 ctrl 键 之后 选中 你 的lable 选好之后 找到 鼠标移动事件 双击
之后再那里写代码 --------------------编程问答-------------------- 继承Label 控件,重写MouseHover。 --------------------编程问答-------------------- label[] labs = new label[]{label1,label2,label3,label4,label5,label6}

然后循环。。。给同样的属性,绑定同一个事件 --------------------编程问答--------------------
引用 8 楼 junlinfushi 的回复:
可以继承,也可以绑定同一个事件。
对 --------------------编程问答--------------------
引用 14 楼 danding_ge 的回复:
我能说WPF实现这些都不用敲代码吗?

我来支持下WPF,一个样式全搞定~ --------------------编程问答-------------------- 两种办法:
1、长远考虑,做一个累似Lable控件
2、单独写一个Lable这种功能的实现类,用到的地方就调用这个类下的对应方法。 --------------------编程问答-------------------- 补充 WinForm的话是可以直接改写Lable类的 --------------------编程问答-------------------- 3楼方法不好,如果是动太加载或者就像楼主所说太多了,都要去点事件。上面有人说的继承,是说的你写一个lable的控件, --------------------编程问答--------------------
引用 18 楼 l397870376 的回复:
按住 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 就绑定到了同一事件 --------------------编程问答--------------------
引用 27 楼 shengguang1587 的回复:
让你的所有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绑定事件 --------------------编程问答--------------------
引用 28 楼 fuyanzhuo 的回复:
Quote: 引用 27 楼 shengguang1587 的回复:

让你的所有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;
        }
是这样写吗 --------------------编程问答--------------------
引用 32 楼 u010687707 的回复:
Quote: 引用 28 楼 fuyanzhuo 的回复:

Quote: 引用 27 楼 shengguang1587 的回复:

让你的所有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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,