1. 程式人生 > >在ToolStrip中加入具有更好體驗性的DateTimePicker

在ToolStrip中加入具有更好體驗性的DateTimePicker

too 默認 參考 arch items 自定義格式 ros color val

一、 需求的產生
很多時候,需要根據年月或日期來檢索數據。在我的數據庫中,如果只需要以月為單位,我一般按照200801這樣的格式(yyyyMM)保存為int類型。在做數據檢索時,是根據工具欄中的兩個ToolStripComboBox(一個年,一個月)選擇的數據合並成一個年月來檢索數據,但是用戶反映不夠方便和直觀,希望能夠使用日期控件進行選擇。效果如圖:

技術分享圖片
如果不使用工具欄很好做,而使用工具欄又沒有現成的日期工具欄控件,好在微軟實現了一個ToolStripControlHost類,提供了將其他控件加入ToolStrip的能力。

二、 如何將DateTimePicker加入ToolStrip

由於DateTimePicker繼承自Control,可以作為ToolStripControlHost的構造函數的參數構造一個ToolStripControlHost實例, 然後將這個實例直接作為ToolStrip的Item插入到ToolStrip的Items集合中,即可使用。

 this.mainToolStrip.Items.Insert(1,new ToolStripControlHost(new DateTimePicker()));

如果不考慮控件在工具欄中的位置,可以使用Items.Add(ToolStripItem value)方法,使用Items.Insert(int index,ToolStripItem value)方法可以指定控件在工具欄中的位置。

三、 如何設置顯示格式

DateTimePicker默認顯示格式與用戶要求的一般情況下不相同,需要在程序中進行設置。

 DateTimePicker dtp = new
DateTimePicker(); dtp.Format = DateTimePickerFormat.Custom;//自定義格式 dtp.CustomFormat = "yyyyMM";//自定義格式 dtp.Width = 100; this.mainToolStrip.Items.Insert(1,new ToolStripControlHost(dtp));

四、如何使用

工具欄中已經加入了DateTimePicker,但是怎麽使用的,這樣動態加入工具欄的控件不能直接使用,我們可以按照下面的方式使用:

 int yyyyMM = Convert.ToInt32(mainToolStrip.Items[1
].Text);

五、參考文章

1.http://www.cnblogs.com/kevinShan/archive/2007/02/01/636849.html
2.http://msdn2.microsoft.com/zh-cn/library/5daaw6hf.aspx

在ToolStrip中加入具有更好體驗性的DateTimePicker