DIY-自定义控件

2024-05-05 05:32
文章标签 自定义 控件 diy

本文主要是介绍DIY-自定义控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. VS为我们提供了大量的零碎的控件,供我们使用,但也是因为这些控件太过零碎,我们想要一些控件的组合,既然有了这种需求,那么也就一定有了这种供求,自定义控件和用户控件应运而生。
  1. 之前我们已经学过用户控件,http://blog.csdn.net/tgbsqliuying/article/details/40926591
    1. 两者区别
      1. 用户控件往往是从属于某个程序集的,并且,事件和属性都是封装在用户控件的内部,在外部往往不可对整个控件的某个成员进行操作。与其所属的程序共用一个大的环境。
      1. 自定义控件具有暴露在外界的属性和方法,并且以组件的方式供所有VS程序使用,不分编写程序的语言。相比之下,自定义控件就强大多了。

 

  1. 自定义控件的制作示例
    1. 推荐学习博客:http://blog.csdn.net/smallfools/article/details/5637393 写得超级不错
    1. 记得原来学习C#的时候,学到"C#中有且仅有类构成",那么C#中的控件,自然也是由类构成。类的成员变量有:字段,属性,方法,静态方法,构造函数….

那么具体到一个控件类,我们最常用的就是它的属性和方法。

  1. 在学生基础项目中,我遇到这样一个问题:就是公告详情的显示页面和任务的显示页面是非常相似的,只是有些细节不太一样。如下图所示:
    1. 那么我们是否可以将公告任务的所有成员(标题,发布时间,任务进度,公告任务的查看人,公告任务的发布人)封装为一个控件,将所有成员,作为此控件的属性,那么此控件,就可以被多个任务公告付赋值了。答案当然是可以的。

 

  

  1. 先来学习自定义控件:
    1. 那么如何定义一个控件的属性呢? 

              

<pre name="code" class="csharp">  //框架private Panel _pframe = new Panel();//框架宽private Int16 _fwidth;[Bindable(true)][Category("Data")][DefaultValue("")][Localizable(true)]public Int16 Fwidth{get { return _fwidth; }set { _fwidth = value; }}//框架高private Int16 _fheight;[Bindable(true)][Category("Data")][DefaultValue("")][Localizable(true)]public Int16 Fheight{get { return _fheight; }set { _fheight = value; }}#endregion


 

 

 

  1. 那么如何定义一个控件的方法呢?

任务需要编辑进度,所以我们需要将进度选择框的SelectedIndexChanged方法,

<pre name="code" class="csharp">        //进度条改变的事件,属性访问权限为Public,所以此事件是此用户的控件。public event EventHandlerSelectedIndexChanged;


 

我们都知道,事件代码并不是已经在程序中定义好了,只有我们需要此事件时,我们才需要双击此控件,或者选择事件驱动,自动生成事件驱动代码,然后我们补充方法体,自定义控件,也提供了,这个机制:

           

<pre name="code" class="csharp">this._dpSchedule.SelectedIndexChanged += newEventHandler(this._dpSchedule_SelectedIndexChanged);//cmbox item改变事件private void_dpSchedule_SelectedIndexChanged(object sender, EventArgs e){EventArgs e1 = new EventArgs();if (this.SelectedIndexChanged !=null)this.SelectedIndexChanged(SelectedIndexChanged, e1);}


 

 

 

 

因为自定义控件属于一个自定义控件程序,所以此程序经编译,可以生成dll组件,在工具箱引用,就能见到,使用的过程,跟VS自带控件无异。大家可以尝试一下。

这篇关于DIY-自定义控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960894

相关文章

ROS话题通信流程自定义数据格式

ROS话题通信流程自定义数据格式 需求流程实现步骤定义msg文件编辑配置文件编译 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如:

添加自定义的CALayer

iOS开发UI篇—CAlayer(创建图层) 一、添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控制器view的layer上)  1 // 2 // YYViewController.m 3 // 01-创建一个简单的图层 4 // 5 //

XMG xib中不属于一个类的控件,拖线到指定的类中

1.比如我现在有一个view绑定为GreenView,我们按住control向类里面拖线的方式想要达到目的,显然拖不进去。例图如下 那么我们此时还想要达到目的,就需要自己去GreenView的类内部去写IBo 然后这面连接起来 2.第二,大哥郝良建给做的扩展 可以在.h或者.m中写一个NSObject的属性 然后在xib中对应的位置创建一个NSObject的属性

Avalonia 常用控件二 Menu相关

1、Menu 添加代码如下 <Button HorizontalAlignment="Center" Content="Menu/菜单"><Button.Flyout><MenuFlyout><MenuItem Header="打开"/><MenuItem Header="-"/><MenuItem Header="关闭"/></MenuFlyout></Button.Flyout></B

android自定义View的和FramgentActivity的一个小坑

对于自定义View //加载样式TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.TitleBarView, defStyleAttr, 0);setTitle(typedArray.getString(R.styleable.TitleBarView_main_title));//不能写成

第三十七章 添加和使用自定义标题元素 - 自定义标头的继承

文章目录 第三十七章 添加和使用自定义标题元素 - 自定义标头的继承自定义标头的继承示例 在 `SOAPHEADERS` 参数中指定支持的标头元素自定义标头的继承 第三十七章 添加和使用自定义标题元素 - 自定义标头的继承 自定义标头的继承 如果创建此Web 服务的子类,该子类将继承不特定于方法的标头信息 — 包含在 <request> 或 <response> 元素中的标头信

3_创建Tab控件

1,新建MFC 对话框项目,为对话框添加Tab控件,选中Tab控件,新建控件变量m_tab_ctrl 2,为Tab控件添加tab项 m_tab_ctrl.InsertItem(0, L”000”),参数1,哪个位置;参数2,item的名称 3,为Tab控件添加监听事件, void C测试Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESUL

示例:推荐一个基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器

一、目的:基于第三方开源控件库DataGridFilter封装的FilterColumnDataGrid,可以像Excel拥有列头筛选器,感兴趣的可以去下方链接地址查看开源控件库地址。本控件封装的目的在于将第三方库的皮肤和样式封装到皮肤库中可统一设置样式,同时生成nuget方便调用 二、效果如下 三、环境 VS2022 Net7 四、使用方式 1、安装nuget包:H.Con

TextGroupView (TextView组合控件)

TextGroupView ImageView + TextView + TextView +TextView+ EditText +ImageView + ImageView 实现的组合控件 JitPack依赖 A.项目/build.grade allprojects {repositories {...maven { url 'https://jitpack.io' }}} B.

Android 扇形网络控件 - 无网络视图(动画)

前言 一般在APP没有网络的情况下,我们都会用一个无网络的提示图标,在提示方面为了统一app的情况,我们一般使用简单的提示图标,偶尔只需要改变一下图标的颜色就一举两得,而不需要让PS来换一次颜色。当然app有图标特殊要求的就另当别论了。 效果图 当你第一眼看到这样的图,二话不说直接让UI给你切一张图标来的快对吧,我其实开始也是这么想的,但是到了做的app越来越多的时候,你就会发现就算是用