【WinForm窗体控件开发】之三续 窗体控件设计时的事件属性

WinForm真入门(4)——窗体和控件、属性和事件 的基本概念 前言:既然是WinForm真入门教程,首先是一些基础概念,要先掌握,才能更快德熟悉使用WinForm。概念如果不清,入起门来说 费劲。本章还是基础概念:窗体和控件、属性和事件。这些在Winfom中无处不在,必须牢牢掌握! 阅读详情

转自:http://www.cnblogs.com/bobbychencj/archive/2010/12/01/1893361.html


这次我们主要将上回自定义控件的Attribute部分如何定义Event事件属性简单说明下:

在自定义的控件中添加自定义的事件属性步骤:

1.需要声明自定义事件参数,一般是继承自EventArgs类;

2.声明事件委托;

3.定义事件名称;

下面我们来看看一个自定义事件的示例:

我们首先定义一个窗体控件【SecondControl自定义控件的Event属性.cs】,代码如下:

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

namespace WinFormControlLibrary
{
    public partial class SecondControl自定义控件的Event属性 : TextBox
    {
        /// <summary>
        /// Constructor
        /// </summary>
        public SecondControl自定义控件的Event属性()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 声明CustomerLogin自定义事件参数
        /// </summary>
        public sealed class CustomerLoginEventArgs : EventArgs { }

        /// <summary>
        /// 声明CustomerLogout自定义事件参数
        /// </summary>
        public sealed class CustomerLogoutEventArgs : EventArgs { }

        /// <summary>
        /// 声明CustomerLogin事件委托
        /// </summary>
        public delegate void CustomerLoginEventHandler(object sender, CustomerLoginEventArgs e);

        /// <summary>
        /// 声明CustomerLogout事件委托
        /// </summary>
        public delegate void CustomerLogoutEventHandler(object sender, CustomerLogoutEventArgs e);

        /// <summary>
        /// 声明事件名称
        /// </summary>
        [CategoryAttribute("自定义事件")]
        public event CustomerLoginEventHandler CustomerLogin
        {
            add { }
            remove { }
        }

        /// <summary>
        /// 声明事件名称
        /// </summary>
        [CategoryAttribute("自定义事件")]
        public event CustomerLogoutEventHandler CustomerLogout
        {
            add { }
            remove { }
        }

        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
        }
    }
}

接下来,新建Form并添加这个自定义控件,代码如下:

namespace 自定义窗体控件Demo
{
    partial class 之三窗体控件设计时Event属性Attribute
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.secondControl自定义控件的Event属性1 = new WinFormControlLibrary.SecondControl自定义控件的Event属性();
            this.SuspendLayout();
            // 
            // secondControl自定义控件的Event属性1
            // 
            this.secondControl自定义控件的Event属性1.Location = new System.Drawing.Point(55, 48);
            this.secondControl自定义控件的Event属性1.Name = "secondControl自定义控件的Event属性1";
            this.secondControl自定义控件的Event属性1.Size = new System.Drawing.Size(100, 20);
            this.secondControl自定义控件的Event属性1.TabIndex = 0;
            // 
            // 之三窗体控件设计时Event属性Attribute
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(284, 262);
            this.Controls.Add(this.secondControl自定义控件的Event属性1);
            this.Name = "之三窗体控件设计时Event属性Attribute";
            this.Text = "之三窗体控件设计时Event属性Attribute";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private WinFormControlLibrary.SecondControl自定义控件的Event属性 secondControl自定义控件的Event属性1;
    }
}

添加完成后,我们就可以在设计时的属性栏中看见我们自定义的属性了。

image

关于设计时的Attribute就基本介绍到这里。


Winform 窗体控件使用1 RadioButton 单选按钮 一组单选按钮中,只能选中其中一个,互相排斥属性:Name 名称 Text 文本 Checked 是否选中AutoCheck 自动更改其他RadioButton的选中状态 true事件:CheckedChanged 选中状态改变时发生只能选中一项的情况:角色选择登录,性别选择CheckBox 复选框一组复选框中,可以选择多个项。Name 名称 Text 文本 Checked 选中状态。 阅读详情

相关推荐

【Winform学习笔记(七)】Winform无边框窗体拖动功能

在本文中主要介绍 如何将窗体设置成无边框模式、以及实现无边框窗体拖动功能的几种方法。

禾戊之昂的博客 6679

Winform控件的水印效果制作

Winform控件的水印效果制作 在我们的项目中,为控件绘制水印效果是十分常见的事情,下面我就来说说水印效果的制作方式。其实在绝大多数情况下只有下拉框和输入框多会使用水印,比如我们看到的新浪邮箱,(如:图1)。 下面是输入框水印效果的代码实现: using System.Drawing; using System.Windows.Forms; namespace T...

weixin_34184561的博客 356

WinForm 窗体控件 Control 遍历与操作:掌握控件查找与动态交互的核心技巧

在WinForm应用程序开发中,窗体控件的遍历和操作是构建用户界面的关键技能。本教程详细介绍了WinForm窗体控件的树形结构,以及如何通过循环、递归和Controls.Find方法高效地遍历控件。文章还探讨了如何根据控件名称或类型查找特定控件,并对找到的控件进行属性修改和事件触发等操作。通过实际案例,展示了这些技术在动态清空文本框、设置按钮可见性和调整字体等场景中的应用。此外,教程还提供了性能优化和避免常见错误的建议,帮助开发者提升代码效率和健壮性。

caifox的博客 1514

winform绘图技术(二)

前面的示例代码创建了内存位图对象,它的大小等于窗体的客户区域(就是绘图表面)的大小,通过调用Graphics.FromImage将内存中位图的引用传递给Graphics对象,也就是说后面所有对该Graphics对象的操作实际上都是对内存中的位图进行操作的,该操作在C++中等同于将位图对象的指针复制给Graphics对象,两个对象使用的是同一块内存地址。现在Graphics对象表示的是屏幕后方的一块

一览众山小 2325

Winform二(设计布局和窗体事件)

本文主要介绍了在Visual Studio中使用WinForm进行界面设计与布局的方法,包括通过设计界面拖拽控件和手动在代码中添加控件的两种方式。文章详细说明了如何在Form1.Designer.cs和Form1.cs文件中手动添加控件,并强调了控件初始化的注意事项。此外,还介绍了如何实现标准窗体事件和自定义非标准事件,包括事件处理方法的绑定和MessageBox的使用。最后,文章通过一个随堂测验展示了如何设计一个简单的时间查看器,并总结了本章内容,预告了下一章的主题。

欢迎来到RaymondLeigh的知识共享基地 1584

C# WinForm —— 07 Form窗体介绍

下面这个是文件名,当修改文件名时,窗体的 (Name)属性的值 和 代码页面的类名 都会随之修改。InitializeComponent()函数是窗体的初始化函数,里面主要定义了一些窗体和控件的属性,触发的事件/方法等,是 根据用户在属性里设置的内容 自动生成的当 窗体 在文件夹下面的时候,调用时,需要用 “文件夹名字.窗体”

ChanMon的博客 1766

Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

asdfgh0077的博客 638

Winform跨窗体操作控件(使用委托)

Winform跨窗体操作控件是winform开发中很常见的形式,最常见且简单有效的方式便是使用委托的方式来进行操作,下面我将通过一个小实例来说明如何使用委托跨窗体实现控件操作。 实例介绍:两个窗体,Form1按钮打开Form2,然后在Form2的TextBox输入值在Form1的TextBox中显示出来。 一、项目结构 Form1窗体设计: Form2窗

王小川的博客 5556

C# 重写空间 Onpaint事件

我们无法直接在窗体的代码中重写控件的OnPaint事件,只能重写窗体的OnPaint事件。 重写控件的OnPaint事件,必须创建一个新的控件。这个控件继承Windows的控件,然后在创建的控件中重写控件的OnPaint事件。 以PictureBox为例: //定义一个新的控件,继承PictureBox控件 public cl

jiliqiang1986的博客 2015

C# WinForm窗体及控件自适应设计指南

本文还有配套的精品资源,点击获取 简介:在C#编程中,WinForm用于创建桌面应用程序,包含丰富的GUI元素。本文详细讲解了如何实现WinForm窗体及其控件的自适应布局,以适应不同分辨率和屏幕尺寸。介绍了使用百分比定位、调整大小事件、anchoring和docking、TableLayoutPanel和FlowLayoutPanel容器控件、响应式设计以及AutoSiz...

weixin_42515842的博客 3602

一个用 C# 写的 Winform 的窗体控件设计时的例子

这是一个例子,希望能抛砖引玉,将窗体保存成了 XML 的格式,当然也可以保存成 其他格式(如 C#、VB、或直接保存到数据库中)

C#+Winform开发窗体程序

学习笔记 第一章:winform基础 一、概述 1、Windows Form(简称WinForm) 是微软.NET平台下用于开发"图形界面"应用程序的组件。 2、C/S架构 客户机(Client)/服务器(Server),是软件系统体系结构。 通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统...

weixin_30667301的博客 3530

STM32CubeMX实战:FreeRTOS内存管理5种方案全解析(附heap_4避坑指南)

本文深入解析了STM32CubeMX环境下FreeRTOS的5种内存管理方案(heap_1到heap_5),重点介绍了heap_4的优化策略与避坑指南。通过对比分析各方案的特点、性能指标及适用场景,帮助开发者根据项目需求选择最优内存管理策略,提升嵌入式系统开发效率与稳定性。

aa123的博客 618

WinForm控件属性大全

C#控件及常用设计整 1、窗体... 1 2、Label 控件... 3 3、TextBox 控件... 4 4、RichTextBox控件... 5 5、NumericUpDown 控件... 7 6、Button 控件... 7 7、GroupBox 控件... 7 8、RadioButton控件... 8 9、CheckBox 控件... 8 10、ListBox 控件....

AI浩 1万+

保姆级教程:用Cesium的Primitive API实现火箭发射全流程动画(含代码避坑)

本文详细介绍了如何使用Cesium的Primitive API实现火箭发射全流程动画,包括模型控制、关节动画和精细时序管理。通过实战代码示例和性能优化技巧,帮助开发者高效构建高复杂度航天仿真系统,显著提升三维可视化效果与运行效率。

weixin_42565652的博客 212

TI AWR2944毫米波雷达开发板开箱:用官方Demo快速上手3D点云与热图生成

本文详细介绍了TI AWR2944毫米波雷达开发板的开箱与实战应用,包括硬件准备、软件开发环境搭建、Demo固件刷写与配置、实时可视化与数据解析等全流程指南。通过官方Demo快速上手3D点云与热图生成,帮助开发者高效掌握毫米波雷达技术在工业检测、智能交通等领域的应用。

weixin_42627853的博客 307

Winform—常用控件、属性、事件详情介绍

​Winform控件是可再用的组件,封装了用户界面功能,并且可以用于客户端 Windows 应用程序。Windows 窗体不仅提供了许多现成控件,还提供了自行开发控件的基础结构。可以组合现有控件、扩展现有控件或创作自己的自定义控件。 ​

qq_3517289697的博客 3878

AI初识—LLM、Ollama、Llama都是些个啥?

LLM指的是大语言模型(Large Language Model),是一种基于深度学习的模型,能够理解和生成自然语言。它通过大量文本数据进行训练,具备了理解上下文、生成连贯文本和回答问题的能力。著名的LLM包括OpenAI的GPT系列和Google的BERT。在AI技术快速发展的背景下,LLM、Ollama和Llama代表了现代自然语言处理的不同方面。LLM为我们提供了强大的语言理解能力,Ollama为模型的部署和管理提供了便利,而Llama则在效率和多样性上不断推进。

小蜗牛的珍贵百宝箱 4627

【C#基础】之WinForm窗体常用控件的属性、方法及事件简介

今天结合自己以前搜集的一些资料简单总结下Winform窗体常用的控件使用及其属性、方法、事件等…… 一、按钮(Button)控件  几乎存在于所有Windows对话框中,是Windows应用程序中最常用的控件之一。按钮控件允许用户通过单击来执行操作。按钮最重要的事件,也是最常用的事件就是Click。当用户单击按钮时,都会调用Click事件。 按钮的常用属性和事件: 1、常用属性

Have?Fish:Bear's paw 1万+

亚马逊商品评论爬取与情感分析实战:Python+BeautifulSoup高效解析(附反爬技巧)

本文详细介绍了使用Python和BeautifulSoup库高效爬取亚马逊商品评论并进行情感分析的完整实战流程。文章从环境搭建、核心代码编写入手,重点讲解了如何通过设置请求头、添加延迟等防封策略应对反爬机制,确保数据抓取的稳定性。最后,利用TextBlob库对评论文本进行情感分析,并通过可视化图表直观展示产品口碑,为电商选品与市场调研提供数据支持。

weixin_29046611的博客 1164

NGSIM数据集字段解析:从车辆轨迹到交通行为分析

本文深度解析NGSIM数据集的核心字段及其在交通行为分析中的应用。详细解读了车辆时空定位、状态属性及交互关系等关键字段,并通过高速路“幽灵堵车”和城市路口左转行为两个实战案例,展示了如何利用该数据集进行微观交通行为建模与驾驶特征提取,为交通流研究和自动驾驶算法测试提供数据基础。

weixin_29172963的博客 146

C# WinForm界面设计教程(C# Windows窗体应用程序)

WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。C# WinForm 编程需要创建「Windows窗体应用程序」项目。 .NET 提供了大量 Windows 风格的控件和事件,我们可以直接拿来使用,上手简单,开发快速。 Windows 窗体应用程序是 C# 语言中的一个重要应用,也是 C# 语言最常见的应用。这套 C# WinForm 教程将教会大家如何使用 WinForm 进行界面设计,并绑定对应的事件,开

weixin_42715287的博客 8829

半导体硅制造工艺

抛光液和硅片的反应速度很快,只要稍一停留,立刻便会腐蚀,因此取片时,不能在表面上留下抛光液,必须紧接着水抛,直至抛光液被全部冲去,再将片子取下。由于晶圆制造过程有各种各样的晶圆固定器和自动设备,需要严格的直径控制以减少晶圆翘曲和破碎,而单晶硅棒的外径表面并不平整且直径也比最终抛光晶片所规定的直径规格大,因此需要通过外径滚磨获得较为精确的直径。胶体的颗粒直径比磨料的颗粒直径小一个数量级,且硬度与硅相当,因此它比用磨料的机械抛光表面损伤更小,抛光出的硅片表面具有高度的镜面光洁。不受材料导电类型和电阻率的影响。

pgpaojiao的博客 2240

Winform应用程序 控件 窗体 事件

Winform 是一种智能客户端技术,我们可以使用winform应用程序帮我们获取信息,或者传输信息。 winform UI界面语言:XAML 常用窗体属性: 快捷键:【F4】 调出 ClientSize 客户操作【界面大小】,【不计算】窗体边框和边界距离 Size 整个【窗体大小】 Name 窗体【对象命名】 Text 窗体【文本内容】 WordWrap 指示文本框是否【换行】 Passwor...

喵毛的博客 2161

GB28181协议实战:5分钟搞定海康摄像头SIP注册失败问题(附Wireshark抓包分析)

本文详细解析了海康摄像头在GB28181协议下SIP注册失败的7个关键原因及解决方案,包括网络可达性、鉴权参数、NAT穿越等核心问题。通过Wireshark抓包分析,提供快速定位方法,帮助工程师高效解决SIP注册失败问题,提升实时图像联调效率。

weixin_29212867的博客 550

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 【WinForm窗体控件开发】之一 概述
下一篇: 【WinForm窗体控件开发】之四 DesignerSerializationVisibilityAttribute 控件属性的串行化
「已注销」
博客等级 码龄14年 116粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值