从下面这个例子可以看出来区别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

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

  1. [react] React中怎么操作虚拟DOM的Class属性

    [react] React中怎么操作虚拟DOM的Class属性 render() { this.debug('render ....'); this.components.push(<Atten ...

  2. c#抽象属性_C#中的抽象属性

    c#抽象属性 C#抽象属性 (C# Abstract properties) An abstract may contain some abstract properties. That can be ...

  3. java 抽象 属性_在java中如何定义一个抽象属性示例详解

    前言 本文主要给大家介绍的是在java中定义一个抽象属性的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给 ...

  4. java 抽象属性_怎样在java中定义一个抽象属性

    [51CTO活动]8.26 带你深度了解清华大学.搜狗基于算法的IT运维实践与探索 Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给子类.由于Java不支持抽象属性,如果你试图将类 ...

  5. java属性定义_在java中定义抽象属性

    抽象关键字通常应用于类和方法,以便将某些行为的实现委托给子类. Java不支持抽象属性,如果您试图将类属性标记为抽象,则会得到编译错误. 在本教程中,将介绍两种定义抽象属性的方法,这些属性由子类设置, ...

  6. python类中的属性分为类属性和实例属性两种_python中类和实例如何绑定属性与方法示例详解...

    前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言, ...

  7. 【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)

    文章目录 I . Kotlin 变量总结 II . Kotlin 非空变量 III . 非空变量不能赋空 IV . lateinit 关键字 V . lateinit 初始化判定 VI . Kotli ...

  8. @data 重写set方法_C#中的类、方法和属性

    这节讲C#中的类,方法,属性.这是面向对象编程中,我们最直接打交道的三个结构.    类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字 ...

  9. C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性

    这节讲C#中的类,方法,属性.这是面向对象编程中,我们最直接打交道的三个结构.    类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字 ...

最新文章

  1. 概率图模型中的变量消除顺序
  2. transformer bert 入门
  3. linux原有的文件系统扩展,原来linux不用LVM也能扩展文件系统
  4. CentOS7 Ambari2.7.5编译
  5. 双RocketMq集群的搭建
  6. 分别用函数和带参的宏,从三个数中找出最大的数。
  7. Vitis下Linux应用程序开发流程
  8. 谷歌浏览器插件迁移到火狐浏览器
  9. glassfish插件_Eclipse4.2.2安装GlassFish插件
  10. C语言_函数可变参数列表
  11. 夕阳无限好 只是近黄昏
  12. Python开发技术—网络爬虫
  13. Python-数据的多种存储形式
  14. Tomcat 配置数据源
  15. procast的linux安装教程,ProCAST2019免费版
  16. Educational Codeforces Round 133 (Rated for Div. 2) 题解 CD
  17. 关于NDB和VOR的选择
  18. 淘宝客优惠券领取微信小程序前台和后台C#源码
  19. python爬取率_[新手]python爬虫爬取中证指数官网数据
  20. 简析在React Native中如何适配iPhoneX

热门文章

  1. matlab 自动处理数据,Matlab Remote IPC自动化数据处理
  2. 计算机软件申请专利的困难,对于一个软件系统,在中国现在可以申请专利吗?...
  3. bread是可数还是不可数_凡是规则,皆有例外——规则的可数名词复数,真的规则吗?...
  4. 到另一个文件夹 复制hdfs上的文件_HDFS——如何将文件从HDFS复制到本地
  5. html5+css3网页开发实战精解,HTML5+CSS3开发实战
  6. php获取文件上传进度,PHP使用APC获取上传文件进度
  7. 支持php,让Apache支持PHP语言
  8. js打乱数组的顺序_如何用 js 实现一个类似微信红包的随机算法
  9. verilog实现步进电机脉冲分配器(三相六拍)基于Nexys4DDR开发板
  10. 基于 xilinx vivado 的PCIE ip核设置与例程代码详解