C#委托与C#winform开发三个控件知识点

一、委托:

C#中的委托(Delegate)是一种功能强大的类型,它允许我们将方法作为参数传递、存储和调用。委托在事件处理、回调函数和多线程编程等方面发挥着重要作用。本文将深入探讨C#委托的各个方面,包括定义、实例化、调用、多播、匿名方法、Lambda表达式、泛型委托以及与事件的关系。

委托的定义和声明

委托是一种引用类型,它封装了对一个或多个方法的引用。可以使用delegate关键字来声明委托类型,并指定返回类型、委托名称和参数列表。

delegate void MyDelegate(int x, int y);

委托的实例化

委托实例化时需要传递一个方法作为参数,该方法的签名必须与委托类型匹配。通过委托的实例,我们可以调用引用的方法。

void MyMethod(int x, int y)

{

    Console.WriteLine(x + y);

}

MyDelegate myDelegate = new MyDelegate(MyMethod);

委托的调用

通过委托实例调用方法时,将参数传递给委托实例,并使用圆括号进行调用。委托会按顺序调用所引用的方法。

myDelegate(10, 20);

多播委托

委托可以引用多个方法,并按照添加顺序依次调用这些方法。使用+和-操作符可以向委托中添加或移除方法。

void AnotherMethod(int x, int y)

{

    Console.WriteLine(x - y);

}

myDelegate += AnotherMethod;

匿名方法

C# 2.0引入了匿名方法的概念,它允许我们在不声明具体方法的情况下创建委托实例。匿名方法可以内联定义,并且可以直接传递给委托。

MyDelegate myDelegate = delegate(int x, int y)

{

    Console.WriteLine(x * y);

};

Lambda表达式

C# 3.0引入了Lambda表达式,它提供了一种更简洁的语法来创建委托实例。Lambda表达式可以替代匿名方法,并且更易于阅读和编写。

MyDelegate myDelegate = (x, y) =>

{

    Console.WriteLine(x / y);

};

泛型委托

C# 2.0引入了泛型委托(Action和Func),它们可以用于引用具有不同参数和返回类型的方法。泛型委托可以减少委托类型的定义,使代码更具可读性。

Action<int, int> action = (x, y) =>

{

    Console.WriteLine(x + y);

};

Func<int, int, int> func = (x, y) =>

{

    return x * y;

};

委托与事件

委托在事件处理中扮演重要角色。事件是类或对象提供的一种机制,允许其他代码注册为事件的处理程序。事件使用委托来管理和调用事件处理程序。

public class EventPublisher

{

    public event MyDelegate MyEvent;

    public void PublishEvent(int x, int y)

    {

        MyEvent?.Invoke(x, y);

    }

}

public class EventSubscriber

{

    public void HandleEvent(int x, int y)

    {

        Console.WriteLine(x + y);

    }

}

EventPublisher publisher = new EventPublisher();

EventSubscriber subscriber = new EventSubscriber();

publisher.MyEvent += subscriber.HandleEvent;

publisher.PublishEvent(10, 20);

总结:

C#委托是一项强大而灵活的特性,它提供了一种方法引用和回调的机制。通过委托,我们可以将方法作为参数传递,并在需要时进行调用。委托的多播功能使其能够引用多个方法,并按照特定顺序调用它们。匿名方法和Lambda表达式为我们提供了更简洁的语法来创建委托实例。泛型委托则进一步增加了灵活性和可读性。最重要的是,委托在事件处理中起到关键作用,使我们能够响应和处理事件的发生。

通过深入了解C#委托的各个方面,我们可以更好地利用这一强大工具,提高代码的可重用性、可扩展性和可维护性。无论是处理事件、实现回调函数还是进行多线程编程,委托都是您必须掌握的重要概念之一。

二、Timer:

在WinForms开发中,Timer控件是一个常用的计时器控件,它允许您以指定的时间间隔触发事件。下面是Timer控件的一些常用的方法、属性和事件:

方法:

Start():启动计时器,使其开始计时。

Stop():停止计时器,使其暂停计时。

Dispose():释放Timer控件使用的资源。

属性:

Interval:获取或设置计时器事件触发之间的时间间隔(以毫秒为单位)。

Enabled:获取或设置一个值,指示计时器是否启用。若为true,则计时器开始计时;若为false,则计时器停止计时。

事件:

Tick:当计时器的时间间隔到达并且计时器启用时,触发Tick事件。

三、MonthCalender

在WinForms开发中,MonthCalendar控件是一个用于显示月历和选择日期的控件。它提供了许多方法、属性和事件,用于操作和处理日期选择。下面是MonthCalendar控件的一些常用的方法、属性和事件.

方法:

SetDate(DateTime date):设置MonthCalendar控件当前选择的日期。

AddBoldedDate(DateTime date):将指定的日期加粗显示。

RemoveBoldedDate(DateTime date):移除指定日期的加粗显示。

AddAnnuallyBoldedDate(DateTime date):将指定的日期设置为每年都加粗显示。

RemoveAnnuallyBoldedDate(DateTime date):移除每年都加粗显示的指定日期。

AddMonthlyBoldedDate(DateTime date):将指定的日期设置为每月都加粗显示。

RemoveMonthlyBoldedDate(DateTime date):移除每月都加粗显示的指定日期。

属性:

SelectionRange:获取或设置MonthCalendar控件当前选择的日期范围。

BoldedDates:获取或设置加粗显示的日期集合。

AnnuallyBoldedDates:获取或设置每年都加粗显示的日期集合。

MonthlyBoldedDates:获取或设置每月都加粗显示的日期集合。

MaxDate:获取或设置MonthCalendar控件允许选择的最大日期。

MinDate:获取或设置MonthCalendar控件允许选择的最小日期。

事件:

DateChanged:当MonthCalendar控件的选定日期范围发生更改时触发。

DateSelected:当用户选择一个日期时触发。

DisplayDateChanged:当MonthCalendar控件的显示日期更改时触发。

四、ProgressBar

在WinForms开发中,ProgressBar控件用于表示操作进度的进度条。它提供了一些方法、属性和事件,用于设置和获取进度条的状态和属性。下面是ProgressBar控件的一些常用的方法、属性和事件:

方法:

Increment(int value):增加进度条的当前值。可以通过传递正数或负数来增加或减少当前值。

PerformStep():按照Step属性的值增加进度条的当前值。

Reset():将进度条的当前值重置为最小值。

MarqueeAnimationSpeed:获取或设置进度条的滚动动画速度。设置为0时,进度条将显示为连续滚动的动画。

属性:

Value:获取或设置进度条的当前值。

Minimum:获取或设置进度条的最小值。

Maximum:获取或设置进度条的最大值。

Step:获取或设置每次调用Increment或PerformStep时进度条的增量值。

Style:获取或设置进度条的样式。可以是Continuous(连续的)或Marquee(跑马灯)。

MarqueeAnimationSpeed:获取或设置进度条的滚动动画速度。设置为0时,进度条将显示为连续滚动的动画。

事件:

ValueChanged:当进度条的值发生更改时触发。

Click:当用户单击进度条时触发。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值