zoukankan      html  css  js  c++  java
  • C# 自定义承载控件

      例如ToolStripTextBox类,里面的封装就是一个TextBox控件。.NET的类库提供了ToolStripComBox和ToolStripProgressBar两个类。这些类都是从ToolStripControlHost类派生的,ToolStripControlHost允许在菜单栏中或工具栏上承载自定义控件,承载的控件是通过ToolStripControlHost类的构造 函数的参数传递进去的,因此可以事先实例化,一个控件实例,然后再实例化ToolStripControlHost对象,并把控件实例通过构造函数的参数传递给ToolStripControlHost实例。虽然ToolStripControlHost类是可以直接使用的,但是为了方便是从ToolStripControlHost派生一个子类,并把要承载的控件封装在子类中,就好像NET类库所提供的ToolStripTextBox那样。经过这样封装后,就可以直接使用了。不必每次调用都要实例化一个控件的实例,大大的提高了类型的可用性。

      例如:

    定义一个ToolStripDateTimerPciker类,派生自ToolStripControlHost类,

      在ToolStripDateTimePicker的构造函数调用时,通过base(...)来调用基类的构造函数,并使用new运算符创建一个DateTimerPicker实例作为参数传递。从基类的Control属性可以获得承载的DateTimerPicker控件的实例,并用DateTimePicker属性来封装m_Picker字段方便调用时获得被封装的DateTimePicker控件的实例。Value属性封装了m_picker的Value属性,表示当前选择的日期

      DropDown、CloseUp和ValueChanged三个事件分别对应m_Pciker的三个事件,使用add和remove操作符来添加和移除事件关联的方法。

    public class ToolStripDateTimePicker : ToolStripControlHost
    {
        private DateTimePicker m_Picker = null;
        public ToolStripDateTimePicker() : base(new DateTimePicker())
        {
            m_Picker = base.Control as DateTimePicker;
            //对控件进行设置,默认时期显示格式
            m_Picker.Format = DateTimePickerFormat.Custom;
            //设置格式 
            m_Picker.CustomFormat = "yyyy年MM月dd日";
        }
    
        #region 属性
        /// <summary>
        /// 允许的日期最大值
        /// </summary>
        public DateTime MaxDate
        {
            get { return m_Picker.MaxDate; }
            set { m_Picker.MaxDate = value; }
        }
        /// <summary>
        /// 允许的日期最小值
        /// </summary>
        public DateTime MinDate
        {
            get { return m_Picker.MinDate;}
            set { m_Picker.MinDate = value; }
            
        }
        /// <summary>
        /// 已经选中的日期
        /// </summary>
        public DateTime Value
        {
            get { return m_Picker.Value; }
            set { m_Picker.Value = value; }
        }
        //获取被封装的控件
        public DateTimePicker DateTimePicker
        {
            get { return m_Picker; }
        }
        #endregion
    
        #region
        //当日期选择框打开时发生
        public event EventHandler DropDown
        {
            add { m_Picker.DropDown += value; }
            remove { m_Picker.DropDown -= value; }
        }
        ///当日期选择关闭时
        public event EventHandler CloseUP
        {
            add { m_Picker.CloseUp += value; }
            remove { m_Picker.CloseUp -= value; }
        }
        //当选择的日期发生改变时
        public event EventHandler ValueChanged
        {
            add { m_Picker.ValueChanged += value; }
            remove { m_Picker.ValueChanged -= value; }
        }
        #endregion 
    }

    添加一个MenuStrip控件

    在构造函数页面添加

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    
    
    
    namespace 自定义承载控件
    {
        public partial class Form1 : Form
        {
            ToolStripDateTimePicker mndtPicker = null;
            public Form1()
            {
                InitializeComponent();
                //向报表菜单添加自定义菜单项
                mndtPicker = new ToolStripDateTimePicker();
                mndtPicker.MaxDate = new DateTime(2100, 12, 31);
                mndtPicker.MinDate = new DateTime(2000,1,1);
                toolStripMenuItem1.DropDownItems.Add(mndtPicker);
                // 处理事件
                mndtPicker.ValueChanged += mndtPicker_ValueChanged;
            }
            void mndtPicker_ValueChanged(object sender, EventArgs e)
            {
                MessageBox.Show("您选择了:" + mndtPicker.Value.ToLongDateString());
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
        }
    }

       

  • 相关阅读:
    禁用Firefox浏览器中的CSS、Flash及Image加载
    禁用Chrome浏览器中的Image加载
    启用Firefox的同时打开Firebug
    禁用IE的保护模式
    禁用Chrome浏览器的PDF和Flash插件
    屏蔽Chrome的--ignore-certificate-errors提示及禁用扩展插件并实现窗口最大化
    技术文档
    操作工具
    接口自动化
    nmon
  • 原文地址:https://www.cnblogs.com/hjxzjp/p/7751620.html
Copyright © 2011-2022 走看看