委托在Smobiler自定义控件中运用

委托(Delegate)

C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。可以将方法当作另一个方法的参数来进行传递。

委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。

使用委托,必须满足4个条件:

声明委托类型;

必须有一个方法包含了要执行的代码;

必须创建一个委托实例;

必须调用(invoke)委托实例。

声明委托

委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法。

public delegate void MyDelegate (string a);

委托调用

必须先实例化委托,然后再调用。

例如:

public delegate void MyDelegate();

//实例化委托

printString ex1 = new MyDelegate();

//委托调用 通过Invoke()调用,或者可以直接省略

ex1.Invoke();

委托的应用

使用Smobiler的自定义控件时,往往需要在自定义控件中自定义事件,这时就可以运用到委托。

自定义控件的创建可自行查看smobiler官网中自定义控件内容。

应用场景,自定义控件中有button控件,需要点击button触发自定义控件的事件。

我们下面直接看下,如何使用:

partial class ExampleButton :Smobiler.Core.Controls.MobileUserControl

{

/// <summary>

/// 在删除按钮点击时发生

/// </summary>

[Description("在删除按钮点击时发生")]

public event EventHandler ButtonPress;

public ExampleButton() : base()

{

//This call is required by the SmobilerUserControl.

InitializeComponent();

}

private void SmobilerUserControl1_Load(object sender, EventArgs e)

{

button1.Press += (obj, args) => { this.OnButtonPress(); };

}

private void OnButtonPress()

{

if (ButtonPress != null) ButtonPress.Invoke(this, new EventArgs());

}

/// <summary>

/// 一个委托,它表示按钮点击时要调用的方法。

/// </summary>

/// <param name="sender">事件源</param>

/// <param name="e">包含事件数据的 DeletePress</param>

/// <remarks></remarks>

public delegate void EventHandler(object sender, EventArgs e);

}

之后可在Form中添加自定义控件查看:

查看自定义控件的事件,我们发现已经添加事件成功:

原文地址:https://www.cnblogs.com/smobiler/p/11075734.html

时间: 2024-10-21 20:50:37

委托在Smobiler自定义控件中运用的相关文章

自定义组合控件和在自定义控件中使用自定义属性

今天,整理了一下我平时的笔记,写一个比较简单的自定义组合控件,仅供小白参考,大神请绕道,希望能够对大家有一些帮助 首先,得明白为什么我们需要自定义组合控件,它是因为原有控件并不能满足开发的需求,或者说并不能达到我们想要的一种效果,这个时候,就需要我们自己定义一些控件,以达到目的 ![先来看一下效果](http://img.blog.csdn.net/20160716224219109) 个人总结自定义控件的步骤: 1.先写一个布局,这里我用的是一个相对布局,我这里的相对布局就是根布局了 <?xm

关于自定义控件中引入js脚本

自己写了一个自定义控件的工程,工程名为TestControls,自定义控件的内容为: namespace TestControls { public class TestBoxControl : Control { private string textValue = "コピー"; [Description("ボタンのテキスト値")] [Browsable(true)] public virtual string TextValue { set { textValu

wpf自定义控件中使用自定义事件

wpf自定义控件中使用自定义事件 1 创建自定义控件及自定义事件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36     /// <summary>     /// 演示用的自定义控件     /// </summary>     public class ExtButton : Button     {         public

【转】WebResource实现在自定义控件中内嵌JS文件

在类库中的资源  其他项目中要使用 需要嵌入才行 参考文献:WebResource实现在自定义控件中内嵌JS文件 1. WebResource简介 ASP.NET(1.0/1.1)给我们提供了一个开发WebControl的编程模型,于是我们摆脱了asp里面的include模式的复用方式.不过1.0/1.1提供的Web控件开发模型对于处理没有image.css等外部资源的组件还算比较得心应手,script虽然很多时候也是外部资源,但在开发控件的时候我们习惯把script使用Page.Registe

XAML: 自定义控件中事件处理的最佳实践

在开发 XAML(WPF/UWP) 应用程序中,有时候,我们需要创建自定义控件 (Custom Control) 来满足实际需求.而在自定义控件中,我们一般会用到一些原生的控件(如 Button.TextBox 等)来辅助以完成自定义控件的功能. 自定义控件并不像用户控件 (User Control) 一样,使用 Code-Behind(UI 与逻辑在一起)技术.相反,它通过把 UI 与逻辑分离而将两者解耦.因此,创建一个自定义控件会产生两个文件,一个是 Generic.xaml,在它里面定义其

winform自定义控件中其他遮挡控件点击事件

自定义控件在其他窗口调用时,里面的lable阻挡了控件的点击事件 解决方法 自定义控件中lable的 点击事件 private void Lable1_Click(object sender, EventArgs e) { base.OnClick(e);//触发控件点击事件 } 原文地址:https://www.cnblogs.com/shoumufan/p/10276311.html

c#自定义控件中的事件处理

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Drawing; 5 using System.Data; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace UserControls 11 { 12 public partial

C#中的自定义控件中的属性、事件及一些相关特性的总结

今天学习了下C#用户控件开发添加自定义属性的事件,主要参考了MSDN,总结并实验了一些用于开发自定义属性和事件的特性(Attribute). 在这里先说一下我的环境: 操作系统:Windows7旗舰版(Service Pack 1) VS版本:Microsoft Visual Studio Ultimate 2012,版本 11.0.50727.1 RTMREL .NET Framework版本:4.5.50938 C#版本:Visual C# 2012 一.准备工作 1.建立一个C#窗体应用程

【Win 10应用开发】AdaptiveTrigger在自定义控件中是可以触发的

前些天,看到有网友给我留言,说AdaptiveTrigger在自定义控件(模板化控件)中不能触发.因为当时我正在写其他的代码,就没有去做实验来验证,于是我就给这位网友提了使用GotoVisualState的方法来自己切换状态. 今天有空,我就做了做测试,发现AdaptiveTrigger触发器在模板化控件的控件件模板中是可以触发的. 首先,向应用程序项目添加一个新的模板化控件,我叫它为MyControl.如下图. 然后打开Generic.xaml文件,找到新控件的样式,将模板修改为: <Cont