第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

如何將第三方控件嵌入ToolStrip控件

標(biāo)簽:
資訊

最近研究了一下如何将第三方控件嵌入到ToolStrip控件中,并能提供Design-Time下的支持.

 

下面将详细讲解如何把系统的MonthCalendar控件嵌入到ToolStrip控件中.

以下的两幅图片显示了最终的样子.

 

Run-Time下的样子

 

Design-Time下的样子

 

如何将第三方控件嵌入到ToolStrip

 

微软实现了一个ToolStripControlHost类, 它是ToolStripComboBox, ToolStripTextBox, 和 ToolStripProgressBar等的基类. ToolStripControlHost提供了将第三方控件嵌入ToolStrip的能力. 我们可以用两种方式使用它:

 

一, 我们可以直接将继承自Control类的第三方控件作为ToolStripControlHost的构造函数的参数构造一个ToolStripControlHost实例, 将这个实例直接作为ToolStrip的Item加到ToolStrip的Items集合中使用即可.

?


private void Form2_Load(object sender, EventArgs e){    MonthCalendar monthCalendar = new MonthCalendar();    monthCalendar.FirstDayOfWeek = Day.Monday;    this.toolStrip1.Items.Add(new ToolStripControlHost(monthCalendar));}

 

二, 从ToolStripControlHost派生, 在继承类默认参构造函数中将第三方控件作为参数调用基类的有参构造函数. 这种方式可以很容易的在继承类中暴露属性,方法和事件,便于访问.

实现步骤如下:

1, 扩展 ToolStripControlHost。实现一个调用传入所需控件的基类构造函数的默认构造函数。

 

?

1234public ToolStripMonthCalendar() : base(new MonthCalendar()){ }

 

2, 声明一个与包装控件相同类型的属性,并在属性访问器中返回 Control 作为正确类型的控件。

 

 

?


public MonthCalendar MonthCalendarControl{    get    {        return base.Control as MonthCalendar;    }}

 

3, 使用扩展类中的属性和方法公开包装控件的其他常用属性和方法。

?


// Expose the MonthCalendar.FirstDayOfWeek as a property.public Day FirstDayOfWeek{    get    {         return this.MonthCalendarControl.FirstDayOfWeek;    }    set    {        value = this.MonthCalendarControl.FirstDayOfWeek;    }}   // Expose the AddBoldedDate method.public void AddBoldedDate(DateTime dateToBold){     this.MonthCalendarControl.AddBoldedDate(dateToBold);}

 

4, 也可以选择重写 OnSubscribeControlEvents 和 OnUnsubscribeControlEvents 方法,并添加要公开的控件事件。

?


// Subscribe and unsubscribe the control events you wish to expose.protected override void OnSubscribeControlEvents(Control c){    // Call the base so the base events are connected.    base.OnSubscribeControlEvents(c);     // Cast the control to a MonthCalendar control.    MonthCalendar monthCalendarControl = (MonthCalendar)c;     // Add the event.    monthCalendarControl.DateChanged += new DateRangeEventHandler(OnDateChanged);} protected override void OnUnsubscribeControlEvents(Control c){    // Call the base method so the basic events are unsubscribed.    base.OnUnsubscribeControlEvents(c);       // Cast the control to a MonthCalendar control.    MonthCalendar monthCalendarControl = (MonthCalendar)c;      // Remove the event.    monthCalendarControl.DateChanged -= new DateRangeEventHandler(OnDateChanged);}

 

5, 为要公开的事件提供必要的包装。

?


// Declare the DateChanged event. public event DateRangeEventHandler DateChanged;          // Raise the DateChanged event.  private void OnDateChanged(object sender, DateRangeEventArgs e){    if (DateChanged != null)    {        DateChanged(this, e);    }}

 

完整的示例请参见MSDN(http://msdn2.microsoft.com/en-us/library/9k5etstz.aspx ).

 

如何提供设计时的支持

 

1, 为从ToolStripControlHost继承的类添加ToolStripItemDesignerAvailabilityAttribute标签.

 

它可以使ToolStrip在Design-Time下能够找到从ToolStripControlHost继承的第三方控件, 直接效果就是第三方控件在下拉菜单中可以直接列举出来. 另外,除了可以将第三方控件嵌入ToolStrip外, 我们还可以直接将第三方控件嵌入到ContextMenuStrip, MenuStrip和StatusStrip中.

ToolStripItemDesignerAvailability枚举成员如下:

成员名称

说明

All

指定所有控件均可见。

ContextMenuStrip

指定 ContextMenuStrip 是可见的。

MenuStrip

指定 MenuStrip 是可见的。

None

指定无任何控件可见。

StatusStrip

指定 StatusStrip 是可见的。

ToolStrip

指定 ToolStrip 是可见的。

 

2, 为继承的控件添加ToolboxBitmapAttribute标签改变默认Icon.

 

?


[ToolboxBitmap(typeof(MonthCalendar))][DefaultProperty("Value")] [ToolStripItemDesignerAvailability(    ToolStripItemDesignerAvailability.ContextMenuStrip |    ToolStripItemDesignerAvailability.MenuStrip |    ToolStripItemDesignerAvailability.StatusStrip |    ToolStripItemDesignerAvailability.ToolStrip)]public class ToolStripMonthCalendar : ToolStripControlHost{       //TODO: ......}

 

The End

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消