C#中对虚拟属性和抽象属性的重写,重写label实例

从下面这个例子可以看出来区别
       public abstract class A
        {
            //抽象属性不能有实现代码
            public abstract string AbstractProperty { get; set; }

            string s;
            //虚拟属性可以有实现代码
            public virtual string VritualProperty
            {
                get { return this.s; }
                set { this.s = value.ToUpper(); }
            }
        }

        public class B : A
        {
            string message;
            //在继承类(子类)中必须提供抽象属性的实现
            public override string AbstractProperty
            {
                get { return message; }
                set { this.message = value; }
            }

            //重写属性可以调用基类中的实现
            public override string VritualProperty
            {
                get
                {
                    return base.VritualProperty;
                }
                set
                {
                    base.VritualProperty = value;
                }
            }
        }

 

//********************重写label

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ETES.AutoControl_ES.Controls
{
   public class MyLabel:Label
    {

        public override string Text {
            
            get
            {
                return base.Text;
            }

            set
            {
                string str="";
                for(int i=0;i<value.Length;i++)
                {
                    str += value[i];
                    if (i % 10==0) str += "\r\n";
                }
                 base.Text = str;
            }
        }


    }
}
//***************************

  #region //控制按钮标题
        public MyLabel lb = new MyLabel();
        public void InitialTitleManager()
        {
            //lb.Parent = this;
            lb.Visible = true;
            lb.AutoSize = true;
            lb.Font=new System.Drawing.Font("宋体", 9, System.Drawing.FontStyle.Bold);
            foreach (Control v in this.groupBox_CAutoScanSet.Controls)
            {
                if (v.Name.Contains("label"))
                {

                    v.MouseHover += TitleMouseHover;
                    v.MouseLeave += TitleMouseLeave;

                }

            }
            //  MessageBox.Show(" comboBox_AxisType.MouseHover+= TitleMouseHover;");
          
            comboBox_AxisType.MouseHover+= TitleMouseHover;
            comboBox_AxisType.MouseLeave += TitleMouseLeave;
        }
        public void TitleMouseHover(object sender, EventArgs e)
        {
            Control control = sender as Control;

            lb.Location = new System.Drawing.Point(control.Location.X + control.Width, control.Location.Y);

            string titile = "";
            //MessageBox.Show(control.Name);//2020.4.1注释
            if (control.Name.Contains("label"))
            {
                //MessageBox.Show(control.Name);//2020.4.1注释
                string tempStr = "";
                if(control.Text.Contains("AX2"))
                {
                    tempStr = control.Text.Substring(0, 3);
                }
                else
                {
                    tempStr = control.Text.Substring(0, 2);
                }
                if (StepModule.AxisDescription.ContainsKey(tempStr))
                {
                    titile = StepModule.AxisDescription[tempStr];
                }

            }
            else if(control.Name.Contains("comboBox"))
            {
                //MessageBox.Show(control.Name);//2020.4.1注释
                titile = StepModule.AxisDescription[control.Text];


            }
            lb.Parent = control.Parent;
            lb.Visible = true;
            lb.BringToFront();
            lb.Location = new System.Drawing.Point(control.Location.X + control.Width, control.Location.Y);
            lb.Text = titile;
        }
           
        
    public void TitleMouseLeave(object sender, EventArgs e)
    {

        Control control = sender as Control;//此处control只是局部变量,函数结束后,control释放,control引用的对象不会释放

        lb.Location = new System.Drawing.Point(control.Location.X + control.Width, control.Location.Y);
        lb.Visible = false;
        lb.AutoSize = true;
        lb.Text = "";


    }

    #endregion

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值