首页 > 编程语言 >C#自定义控件(自定义属性、自定义事件)

C#自定义控件(自定义属性、自定义事件)

时间:2024-06-09 13:58:50浏览次数:27  
标签:类库 控件 自定义 C# isRun System 添加 using

1、创建类库项目

在当前解决方案中添加新项目类库。

注意选择“.NET Framework

创建完成后,删除默认的Class1类。

2、添加项目图片

在类库的debug中添加一个文件夹image,并复制项目需要的图片。

3、把全部项目拖放到资源文件中

选中所有图片,然后拖放到[资源],方法是右击类库项目,选择[属性]—>[资源]—>单击创建链接。

选中images里面所有图片,拖放到右边,即可添加到Resources资源文件中:

4、添加用户控件

右击类库项目名称,选择[添加]—>[新建项]然后再窗口中选择“用户控件(Windows窗体)”。


然后单击添加按钮,可以看到用户控件的模板:

5、设置尺寸样式

6、按F7进入代码视图

编写如下代码:

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

namespace thing.HeatingCustomControls
{
    public partial class ThingerHCValve : UserControl
    {
        public ThingerHCValve()
        {
            InitializeComponent();
        }

        private bool isRun;
        [Category("自定义属性")]
        [Description("阀门启动或关闭")]
        public bool IsRun
        {
            get 
            { 
                return isRun; 
            }
            set 
            {
                if(value != isRun)
                {
                    isRun = value;
                    if (isRun)
                    {
                        this.lblValve.Text = "已打开";
                        this.picValve.BackgroundImage = Properties.Resources.阀门Open;
                    }
                    else
                    {
                        this.lblValve.Text = "已关闭";
                        this.picValve.BackgroundImage = Properties.Resources.阀门Close;
                    }
                } 
            }
        }

        public event Action<bool> IsRunChanged;
        [Category("自定义事件")]
        [Description("阀门双击事件")]
        private void picValve_DoubleClick(object sender, EventArgs e)
        {
            if(IsRunChanged == null)
            {
                IsRunChanged(IsRun);
            }
        }
    }
}

标签:类库,控件,自定义,C#,isRun,System,添加,using
From: https://blog.csdn.net/m0_62366581/article/details/139553373

相关文章

  • cisco packet tracer 8.2.2 安装配置 基础教程 免登录免破解 简单方便
    1官网下载,需要账号2安装3启动之前,直接断网,禁用网卡(⊙﹏⊙)......
  • C++的近邻算法详解及应用
            近邻算法,也被称为最近邻算法或k-近邻算法(k-NN),是一种基本的分类和回归方法。它基于实例进行学习,无需进行模型训练,而是直接通过计算待分类样本与已知类别样本之间的距离来确定其所属类别。在C++中,我们可以通过编写特定的函数或利用现有的库来实现近邻算法。  ......
  • Qt 子线程调用connect/QMetaObject::invokeMethod 不调用槽函数问题
    在使用invokeMethod进行跨线程调用的时候,发现invokeMethod在某些情况下不能正常调用.经过查各种资料发现invokeMethod底层的调用逻辑是通过Qt事件循环处理,所以子线程需要显示的调用QEventLoop::exec()或者QCoreApplication::processEvents()执行信号槽处理.首先有一个QDemoObje......
  • Java入门基础11:面向对象高级一(static、extends继承)
    Java面向对象高级特性有以下几个:继承,多态,封装,抽象,接口,匿名内部类,静态成员,final关键字,异常处理等。我会将它分为三章详细讲,本章主要讲静态和继承staticstatic叫静态,可以修饰成员变量、成员方法。类变量(静态成员变量):有static修饰,属于类,在计算机里只有一份,会被类的全部对象......
  • EBS:Oracle 数据库执行慢SQL
    至少有APPS权限SELECTa.request_id,floor((sysdate-a.actual_start_date)*24)hou,round(((sysdate-a.actual_start_date)*24-floor((sysdate-a.actual_start_date)*24))*60)mini,c.sql_address,c.inst_id,f.full_name,u.user_name,b.user_c......
  • 安卓实战演练——Surfaceview视频播放器
    代码来源《Android移动开发基础案例教程》gradle4.6packagename:cn.itcast.surfaceview先在res中建一个raw包,包中导入vedio.mp4Androidmanifest代码:<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/andro......
  • C++三大特性之多态
    1.多态1.1多态的概念在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。通俗来说,就是......
  • PHP-CGI Windows平台远程代码执行漏洞复现(CVE-2024-4577)
    0x01产品简介PHP-CGI 是一种用于在 Web 服务器上运行 PHP 脚本的接口,通过 CGI(公共网关接口)将 PHP 解释器与 Web 服务器连接。0x02漏洞概述2024年6月,PHP官方发布新版本,修复了 PHP-CGI 中一个远程代码执行漏洞。鉴于该漏洞无前置条件,易于利用,且默认情况下可获取......
  • 全能大模型AIGC产品的使用体验、选择倾向与未来展望
    随着人工智能技术的迅猛发展,AIGC(人工智能生成内容)领域正迎来前所未有的繁荣。其中,全能大模型产品以其强大的生成能力和广泛的应用场景,吸引了众多用户的关注。腾讯元宝APP的上线更是为这一领域注入了新的活力。本文将从个人使用体验出发,分享对全能大模型AIGC产品的看法并探讨其......
  • C++20 新特性: 三向比较运算符
    目录标题功能和用法示例代码如何重载三向比较运算符示例:重载三向比较运算符注意事项结语C++20引入了一种新的比较运算符,称为“三向比较运算符”或“太空船运算符”,其符号为<=>。这个运算符提供了一种简化方式来同时比较两个值的相等性、小于和大于状态。这一特......