C#用户控件开发

简介:   控件名称: chkSelect label1 BeginDatePicker EndDatePicker   控件代码如下(直接从UserControl继承)  1 using System; 2 using System.

 

 

控件名称:

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 }

 

 

 

相关文章
|
2月前
|
SQL 开发框架 .NET
C#一分钟浅谈:数据绑定与数据源控件
在Web开发中,数据绑定和数据源控件是实现动态网页的关键技术。本文从基础概念入手,详细讲解数据绑定的原理及其在ASP.NET中的应用,并介绍常见数据绑定方式:手动绑定和自动绑定。接着,文章重点介绍了ASP.NET中的数据源控件,如`SqlDataSource`、`ObjectDataSource`、`XmlDataSource`和`LinqDataSource`,并通过具体示例演示如何使用`SqlDataSource`和`GridView`进行数据绑定。最后,还列举了一些常见问题及其解决办法,帮助读者更好地理解和应用这些技术。
83 4
|
1月前
|
前端开发 JavaScript 安全
C#一分钟浅谈:Blazor WebAssembly 开发
Blazor WebAssembly 是一个客户端框架,允许开发者使用C#和Razor语法构建Web应用。本文介绍了Blazor WebAssembly的基本概念、常见问题及解决方案,包括路由配置、数据绑定、异步操作、状态管理和性能优化等方面的内容,并分享了一些易错点及如何避免的方法。希望这些内容能帮助你在Blazor WebAssembly开发中少走弯路,提高开发效率。
103 51
|
4月前
|
C#
|
1月前
|
开发框架 缓存 .NET
C# 一分钟浅谈:Blazor Server 端开发
Blazor Server 是基于 ASP.NET Core 的框架,允许使用 C# 和 Razor 语法构建交互式 Web 应用。本文介绍 Blazor Server 的基本概念、快速入门、常见问题及解决方案,帮助开发者快速上手。涵盖创建应用、基本组件、数据绑定、状态管理、跨组件通信、错误处理和性能优化等内容。
40 1
|
1月前
|
缓存 C# 开发者
C# 一分钟浅谈:Blazor Server 端开发
本文介绍了 Blazor Server,一种基于 .NET 的 Web 开发模型,允许使用 C# 和 Razor 语法构建交互式 Web 应用。文章从基础概念、创建应用、常见问题及解决方案、易错点及避免方法等方面详细讲解,帮助开发者快速上手并提高开发效率。
50 2
|
1月前
|
测试技术 Go C#
C#一分钟浅谈:ReSharper 插件增强开发效率
【10月更文挑战第25天】ReSharper 是 JetBrains 开发的一款 Visual Studio 插件,旨在提高 .NET 开发者的生产力。它通过代码分析、重构、导航等功能,帮助开发者避免常见错误,提升代码质量和开发效率。本文将通过具体代码案例,详细介绍 ReSharper 的常见功能及其应用。
43 1
|
1月前
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
|
2月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
42 1
|
2月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
3月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。