孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

 

控件名称:

chkSelect

label1

BeginDatePicker

EndDatePicker

 

控件代码如下(直接从UserControl继承) 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Drawing;
  5 using System.Data;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 
 10 namespace CustomControlSample
 11 {
 12     [ToolboxBitmap(typeof(System.Windows.Forms.DateTimePicker))]
 13     public partial class DateTimeBeginEnd : UserControl
 14     {
 15         public DateTimeBeginEnd()
 16         {
 17             InitializeComponent();
 18             this.FCheckboxVisible = true;
 19             this.BeginDatePicker.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
 20             this.EndDatePicker.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
 21             this.BeginDatePicker.CustomFormat = "yyyy-MM-dd HH:mm:ss";
 22             this.EndDatePicker.CustomFormat = "yyyy-MM-dd HH:mm:ss";
 23             this.BeginDatePicker.Left=nBeginDateLeft;
 24         }
 25 
 26         private int nBeginDateLeft=25;
 27 
 28         private DateTime FBeginDate;
 29         private DateTime FEndDate;
 30         private Boolean FCheckDateTime;
 31         private Boolean FCheckboxVisible;
 32         private Boolean FCheckboxChecked;
 33         private DateTimePickerFormat FDateTimeFormat;
 34         private string FDateTimeCustomFormat;
 35 
 36         public delegate void CustomFormatChangeEventHandle(object sender, EventArgs arg);
 37         public event CustomFormatChangeEventHandle FormatChanged;
 38 
 39         private void OnFormatChanged(EventArgs e)
 40         {
 41             if (this.FormatChanged!=null)
 42             {
 43                 this.FormatChanged(this,e);
 44             }
 45         }
 46 
 47         public DateTime BeginDate 
 48         {
 49             get
 50             {
 51                 this.FBeginDate = this.BeginDatePicker.Value;
 52                 return this.FBeginDate;
 53             }
 54             set
 55             {
 56                 this.FBeginDate = value;
 57                 this.BeginDatePicker.Value = this.FBeginDate;
 58             }
 59         }
 60 
 61         public DateTime EndDate
 62         {
 63             get
 64             {
 65                 this.FEndDate = this.EndDatePicker.Value;
 66                 return this.FEndDate;
 67             }
 68             set
 69             {
 70                 this.FEndDate = value;
 71                 this.EndDatePicker.Value =this.FEndDate;
 72             }
 73         }
 74 
 75         public Boolean CheckDateTime
 76         {
 77             get
 78             {
 79                 this.FCheckDateTime = this.chkSelect.Checked;
 80                 return this.FCheckDateTime;
 81             }
 82             set
 83             {
 84                 this.FCheckDateTime = value;
 85                 this.chkSelect.Checked = this.FCheckDateTime;
 86             }
 87         }
 88 
 89         public Boolean CheckboxVisible
 90         {
 91             get
 92             {
 93                 this.FCheckboxVisible = this.chkSelect.Visible;
 94                 return this.FCheckboxVisible;
 95             }
 96             set
 97             {
 98                 this.FCheckboxVisible = value;
 99                 this.chkSelect.Visible = this.FCheckboxVisible;
100             }
101         }
102 
103         public DateTimePickerFormat DateTimeFormat
104         {
105             get
106             {
107                 this.FDateTimeFormat = this.BeginDatePicker.Format;
108                 return this.FDateTimeFormat;
109             }
110             set
111             {
112                 if (FDateTimeFormat != value)
113                 {
114                     this.FDateTimeFormat = value;
115                     this.BeginDatePicker.Format = this.FDateTimeFormat;
116                     this.EndDatePicker.Format = this.FDateTimeFormat;
117                     OnFontChanged(null);
118                 }
119             }
120         }
121 
122         public string DateTimeCustomFormat
123         {
124             get
125             {
126                 this.FDateTimeCustomFormat = this.BeginDatePicker.CustomFormat;
127                 return this.FDateTimeCustomFormat;
128             }
129             set
130             {
131                 this.FDateTimeCustomFormat = value;
132                 this.BeginDatePicker.CustomFormat = this.FDateTimeCustomFormat;
133                 this.EndDatePicker.CustomFormat = this.FDateTimeCustomFormat;
134             }
135         }
136 
137         public Boolean CheckboxChecked
138         {
139             get
140             {
141                 this.FCheckboxChecked = this.chkSelect.Checked;
142                 return this.FCheckboxChecked;
143             }
144             set
145             {
146                 this.FCheckboxChecked = value;
147                 this.chkSelect.Checked = this.FCheckboxChecked;
148             }
149         }
150 
151         public event EventHandler BeginDatePickerChange;
152         public event EventHandler EndDatePickerChange;
153         public event EventHandler CheckBoxClick;
154 
155         protected void OnBeginDateChange(EventArgs arg)
156         {
157             if (BeginDatePickerChange != null)
158                 BeginDatePickerChange(this, arg);
159         }
160 
161         protected void OnEndDateChange(EventArgs arg)
162         {
163             if (EndDatePickerChange != null)
164                 EndDatePickerChange(this, arg);
165         }
166 
167         protected void OnCheckBoxChange(EventArgs arg)
168         {
169             if (CheckBoxClick != null)
170                 CheckBoxClick(this,arg);
171         }
172 
173         private void EndDatePicker_ValueChanged(object sender, EventArgs e)
174         {
175             OnEndDateChange(e);
176         }
177 
178         private void BeginDatePicker_ValueChanged(object sender, EventArgs e)
179         {
180             OnBeginDateChange(e);
181         }
182 
183         private void chkSelect_Click(object sender, EventArgs e)
184         {
185             OnCheckBoxChange(e);
186         }
187 
188         private void EndDatePicker_FormatChanged(object sender, EventArgs e)
189         {
190             OnFormatChanged(e);
191             TextChange();
192         }
193 
194         private void BeginDatePicker_FormatChanged(object sender, EventArgs e)
195         {
196             OnFormatChanged(e);
197             TextChange();
198         }
199 
200         private void EndDatePicker_FontChanged(object sender, EventArgs e)
201         {
202             OnFormatChanged(e);
203             TextChange();
204             //if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)
205             //{
206             //    //returnFlag = true;  DesignMode设计时状态
207             //}
208             //else if (System.Diagnostics.Process.GetCurrentProcess().ProcessName.ToUpper().Equals("DEVENV"))
209             //{
210             //    //returnFlag = true;
211             //}  
212         }
213 
214         private void TextChange()
215         {
216             this.BeginDatePicker.Width = TextRenderer.MeasureText(this.BeginDatePicker.Value.ToString(this.BeginDatePicker.CustomFormat), this.BeginDatePicker.Font).Width+37;
217             this.EndDatePicker.Width = TextRenderer.MeasureText(this.EndDatePicker.Value.ToString(this.EndDatePicker.CustomFormat), this.EndDatePicker.Font).Width + 37;
218             this.label1.Left =this.BeginDatePicker.Left+this.BeginDatePicker.Width+2;
219             this.EndDatePicker.Left = this.label1.Left + this.label1.Width + 2;
220         }
221 
222         private void BeginDatePicker_FontChanged(object sender, EventArgs e)
223         {
224             OnFormatChanged(e);
225             TextChange();
226         }
227 
228         private void DateTimeBeginEnd_Resize(object sender, EventArgs e)
229         {
230             //int nLabelLeft = 0;
231             //int nEndDateLeft = 0;
232             //nLabelLeft = this.BeginDatePicker.Left + this.BeginDatePicker.Width + 2;
233             //this.label1.Left = nLabelLeft;
234             //nEndDateLeft = this.label1.Left + this.label1.Width + 2;
235             //this.EndDatePicker.Left = nEndDateLeft;
236             this.BeginDatePicker.Width=(this.Width-25-label1.Width-6)/2;
237             this.EndDatePicker.Width=this.BeginDatePicker.Width;
238             this.label1.Left=this.BeginDatePicker.Left + this.BeginDatePicker.Width + 2;
239             this.EndDatePicker.Left =this.label1.Left + this.label1.Width + 2;
240         }
241     }
242 }

 

 

 

posted on 2012-12-29 14:47  孤独的猫  阅读(681)  评论(0编辑  收藏  举报