一、 需求的产生
      很多时候,需要根据年月或日期来检索数据。在我的数据库中,如果只需要以月为单位,我一般按照200801这样的格式(yyyyMM)保存为int类型。在做数据检索时,是根据工具栏中的两个ToolStripComboBox(一个年,一个月)选择的数据合并成一个年月来检索数据,但是用户反映不够方便和直观,希望能够使用日期控件进行选择。效果如图:


如果不使用工具栏很好做,而使用工具栏又没有现成的日期工具栏控件,好在微软实现了一个ToolStripControlHost类,提供了将其他控件加入ToolStrip的能力。

二、 如何将DateTimePicker加入ToolStrip

由于DateTimePicker继承自Control,可以作为ToolStripControlHost的构造函数的参数构造一个ToolStripControlHost实例, 然后将这个实例直接作为ToolStrip的Item插入到ToolStrip的Items集合中,即可使用。

 this.mainToolStrip.Items.Insert(,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 = ;
this.mainToolStrip.Items.Insert(,new ToolStripControlHost(dtp));

四、如何使用

工具栏中已经加入了DateTimePicker,但是怎么使用的,这样动态加入工具栏的控件不能直接使用,我们可以按照下面的方式使用:

 int yyyyMM = Convert.ToInt32(mainToolStrip.Items[].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的更多相关文章

  1. 移动app的体验性测试

    最近用户体验被提的次数较多,大家可能会遇到这种情况,客户“你们软件功能没问题了,但就是感觉不好用,能不能优化一下,做的高大上些”,作为一个有经验的测试工程师这个时候你就应该知道问题在于用户体验了 关于 ...

  2. .NET中生成水印更好的方法

    .NET中生成水印更好的方法 为了保护知识产权,防止资源被盗用,水印在博客.网店等场景中非常常见. 本文首先演示了基于System.Drawing.Image做正常操作.然后基于Direct2D/WI ...

  3. 想在don‘t starve中活的更久?那饥荒海难攻略你怎么能不知道!

    饥荒海难mac版是一款非常好玩的烧脑游戏.玩家将扮演一个勇敢的绅士科学家威尔逊,被一个恶魔困住并送到一个神秘的荒野世界,玩家必须利用异世界中的自然资源让自己存活下去,并且抵御各种异世界生物的威胁.想在 ...

  4. 《挑战30天C++入门极限》C/C++中字符串常量的不相等性及字符串的Copy

        C/C++中字符串常量的不相等性及字符串的Copy #include <iostream>    void main(void)  {      if("test&quo ...

  5. SharePoint 2010中使用SPListItemCollectionPosition更快的结果

    转:http://www.16kan.com/article/detail/318657.html Introduction介绍 In this article we will explore the ...

  6. Web服务中延时对QoE(体验质量)的影响

    S. Egger等人在论文<WAITING TIMES IN QUALITY OF EXPERIENCE FOR WEB BASED SERVICES>中,研究了Web服务中延时对主观感受 ...

  7. Python中函数和模块的体验与使用

    函数基础 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个 ...

  8. JavaScript中该如何[更好的]做动效

    在用js写动画的时候,无非使用 setTimeout/setInterval 或者 requestAnimationFrame 来处理动画(在jquery的代码里也是这么干的),本文主要为了记录下两者 ...

  9. 十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架

    我们已经将 IntelliJ IDEA 中的 Maven 项目的框架搭建完成.接着上文,在本文中,我们更近一步,利用 Tomcat 运行我们的 Web 项目. 如上图所示,我们进一步扩展了项目的结构, ...

随机推荐

  1. 使用Visual Studio Code调试React Native报错

    报错信息: [Error] Error: Unknown error: not all success patterns were matched. It means that "react ...

  2. Jquery——几个注意的小知识

    event.stopPropagation() 停止事件冒泡 event.preventDefault()//组织默认行为(例如错误的时候,阻止按钮提交) event.type获取事件类型 event ...

  3. JavaScript 之 解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码

    这里以解码百度访问统计代码构造函数为示例: 以下为要统计JavaScript源码:红色加粗部分将是要修改的地方. eval(function(p,a,c,k,e,d){e=function(c){re ...

  4. Python+OpenCV实现FasterRcnn样本查看器

    一.上代码 import cv2 import os def get_samples(dir): datasets = [] files = os.listdir(dir) for file in f ...

  5. Linux开机自动启动某一程序

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

  6. vuejs 过渡效果

    过渡效果 https://cn.vuejs.org/v2/guide/transitions.html http://router.vuejs.org/zh-cn/advanced/transitio ...

  7. linux 新进程的创建

    慕课18原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.背景知识: 1. ...

  8. Python学习笔记六:数据库操作

    一:Python操作数据库的流程 二:开发环境准备 1:开发工具PyCharm 2:Python操作mysql的工具:需要安装Python-Mysql Connector,网址:https://sou ...

  9. C#匿名对象在其它方法体内怎么取到相应的值(不想建立对应的类并转化的情况下)?

    public object AnonymousObj() { ", Message = "OK", Data = new {...} } } public void Ot ...

  10. CentOS6.x 图形界面(gnome)安装

    CentOS6默认的安装选项 Desktop :基本的桌面系统,包括常用的桌面软件,如文档查看工具. Minimal Desktop :基本的桌面系统,包含的软件更少. Minimal :基本的系统, ...