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
C#中对虚拟属性和抽象属性的重写,重写label实例相关推荐
- [react] React中怎么操作虚拟DOM的Class属性
[react] React中怎么操作虚拟DOM的Class属性 render() { this.debug('render ....'); this.components.push(<Atten ...
- c#抽象属性_C#中的抽象属性
c#抽象属性 C#抽象属性 (C# Abstract properties) An abstract may contain some abstract properties. That can be ...
- java 抽象 属性_在java中如何定义一个抽象属性示例详解
前言 本文主要给大家介绍的是在java中定义一个抽象属性的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给 ...
- java 抽象属性_怎样在java中定义一个抽象属性
[51CTO活动]8.26 带你深度了解清华大学.搜狗基于算法的IT运维实践与探索 Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给子类.由于Java不支持抽象属性,如果你试图将类 ...
- java属性定义_在java中定义抽象属性
抽象关键字通常应用于类和方法,以便将某些行为的实现委托给子类. Java不支持抽象属性,如果您试图将类属性标记为抽象,则会得到编译错误. 在本教程中,将介绍两种定义抽象属性的方法,这些属性由子类设置, ...
- python类中的属性分为类属性和实例属性两种_python中类和实例如何绑定属性与方法示例详解...
前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言, ...
- 【Kotlin】变量简介 ( 可空类型 | lateinit | 初始化判定 | 非空类型 | !! 与 ? 修饰符 | ?= ?. ?: 运算符 | 抽象属性变量)
文章目录 I . Kotlin 变量总结 II . Kotlin 非空变量 III . 非空变量不能赋空 IV . lateinit 关键字 V . lateinit 初始化判定 VI . Kotli ...
- @data 重写set方法_C#中的类、方法和属性
这节讲C#中的类,方法,属性.这是面向对象编程中,我们最直接打交道的三个结构. 类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字 ...
- C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性
这节讲C#中的类,方法,属性.这是面向对象编程中,我们最直接打交道的三个结构. 类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字 ...
最新文章
- 概率图模型中的变量消除顺序
- transformer bert 入门
- linux原有的文件系统扩展,原来linux不用LVM也能扩展文件系统
- CentOS7 Ambari2.7.5编译
- 双RocketMq集群的搭建
- 分别用函数和带参的宏,从三个数中找出最大的数。
- Vitis下Linux应用程序开发流程
- 谷歌浏览器插件迁移到火狐浏览器
- glassfish插件_Eclipse4.2.2安装GlassFish插件
- C语言_函数可变参数列表
- 夕阳无限好 只是近黄昏
- Python开发技术—网络爬虫
- Python-数据的多种存储形式
- Tomcat 配置数据源
- procast的linux安装教程,ProCAST2019免费版
- Educational Codeforces Round 133 (Rated for Div. 2) 题解 CD
- 关于NDB和VOR的选择
- 淘宝客优惠券领取微信小程序前台和后台C#源码
- python爬取率_[新手]python爬虫爬取中证指数官网数据
- 简析在React Native中如何适配iPhoneX
热门文章
- matlab 自动处理数据,Matlab Remote IPC自动化数据处理
- 计算机软件申请专利的困难,对于一个软件系统,在中国现在可以申请专利吗?...
- bread是可数还是不可数_凡是规则,皆有例外——规则的可数名词复数,真的规则吗?...
- 到另一个文件夹 复制hdfs上的文件_HDFS——如何将文件从HDFS复制到本地
- html5+css3网页开发实战精解,HTML5+CSS3开发实战
- php获取文件上传进度,PHP使用APC获取上传文件进度
- 支持php,让Apache支持PHP语言
- js打乱数组的顺序_如何用 js 实现一个类似微信红包的随机算法
- verilog实现步进电机脉冲分配器(三相六拍)基于Nexys4DDR开发板
- 基于 xilinx vivado 的PCIE ip核设置与例程代码详解