C#.Net用户自定义控件制作教程

Net用户自定义控件继承UserControl类,设计很简单的,像平时在窗体上拖控件一样。

下面跟着我一步步做:

1. 建立一个工程,添加用户控件。

2.在打开的窗体内输入控件名称,如:"ucButton",按确定按钮。接下来在空白区域拖放3个.Net控件。

如下图:

3.编码

代码

///

/// C#.Net 设计用户自定义控件

/// C#制作用户自定义控件 (by https://www.360docs.net/doc/f110539487.html, 易学网)

///

///

[ToolboxBitmap(typeof(CustomControl.ucButton), "ucButton.bmp")]

public partial class ucButton : UserControl

{

private bool _IsFocused = false; //标记按钮是否为焦点状态

public ucButton()

{

InitializeComponent();

this.DoHideFocusedTag();

this.MyCatpionText = https://www.360docs.net/doc/f110539487.html,;

}

private EventHandler _OnButtonClick = null;

private string _MyCatpionText = "ucButton1";

///

///按钮标题

///

[EditorBrowsable(EditorBrowsableState.Always)]

[Browsable(true)]

[DefaultValue("ucButton1")]

public string MyCatpionText

{

get { return _MyCatpionText; }

set { _MyCatpionText = value; lblCaption.Text = _MyCatpionText; } }

///

///用户自定义Click事件

///

[EditorBrowsable(EditorBrowsableState.Always)]

[Browsable(true)]

public event EventHandler OnButtonClick

{

add { _OnButtonClick += new EventHandler(value); }

remove { _OnButtonClick -= new EventHandler(value); }

}

private void lblCaption_Click(object sender, EventArgs e)

{

//转移Click事件, 触发用户自定义事件

if (_OnButtonClick != null) _OnButtonClick(this, e);

}

private void lblCaption_MouseDown(object sender, MouseEventArgs e) {

if (_IsFocused)

{

lblCaption.Font = new Font(lblCaption.Font.FontFamily, lblCaption.Font.Size, FontStyle.Bold);

}

}

private void lblCaption_MouseUp(object sender, MouseEventArgs e) {

if (_IsFocused)

{

lblCaption.Font = new Font(lblCaption.Font.FontFamily, lblCaption.Font.Size, FontStyle.Regular);

}

}

private void ucButton_SizeChanged(object sender, EventArgs e)

{

lblUnderLine.Top = this.Height - 1;

lblUnderLine.Width = this.Width - 15;

}

///

///还原按钮状态

///

public void DoHideFocusedTag()

{

this.pictureBox1.Image = global::vjsdn.CustomControl.Properties.Resources.GrayTag;

this.lblUnderLine.Visible = false;

lblCaption.ForeColor = Color.Black;

}

///

///设计按钮为焦点状态

///

public void DoShowFocusedTag()

{

this.pictureBox1.Image = global::vjsdn.CustomControl.Properties.Resources.FosedTag;

this.lblUnderLine.Visible = true;

lblCaption.ForeColor = Color.Blue;

}

private void ucButton_MouseEnter(object sender, EventArgs e)

{

if (this.Parent != null)

{

foreach (Control c in this.Parent.Controls)

{

if (c is ucButton) (c as ucButton).DoHideFocusedTag();

}

}

this.DoShowFocusedTag();

_IsFocused = true;

}

[EditorBrowsable(EditorBrowsableState.Always)]

[Browsable(true)]

[Description("")]

public Label MyCaption

{

get { return lblCaption; }

}

private void lblCaption_MouseEnter(object sender, EventArgs e)

{

this.ucButton_MouseEnter(sender, e);

}

}

4. 按F5编译项目,建立一个测试窗体,在控件工具栏会看到有个齿轮图标的项目。

在窗体上拖3个ucButton。

5.设置按钮标题及事件。

6.运行程序

用户控件事件执行顺序

在WebForm1页面上直接放置用户控件WebUserControl1时的事件顺序:WebUserControl1_Init WebForm1_Init Page_Load WebUserControl1_Load WebForm1_PreRender WebUserControl1_PreRender WebUserControl1_Unload WebForm1_Unload 在WebForm1页面的OnInit方法中用代码Load用户控件WebUserControl1时的事件顺序:WebForm1_Init: OnInit WebForm1: Loading controls WebUserControl1_Init : OnInit WebForm1: added to Controls WebForm1: LoadViewState WebUserControl1: LoadViewState WebUserControl1: LoadPostData Begin WebUserControl1: LoadPostData End WebForm1_PageLoad: OnLoad after base's Onload. WebUserControl1_Load: after base's OnLoad iWebUserControl1: RaisePostDataChange WebForm1: OnPreRender WebUserControl1: OnPreRender WebForm1: SavedViewState WebUserControl1: SaveViewState 在WebForm1页面的Page_Load方法中用代码Load用户控件WebUserControl1时的事件顺序:WebForm1_Init : OnInit WebForm1: LoadViewState WebForm1_PageLoad: OnLoad after base's Onload. WebForm1: Loading controls WebUserControl1_Init : OnInit WebUserControl1: LoadViewState WebForm1: added to Controls WebUserControl1_Load: after base's OnLoad WebUserControl1: LoadPostData Begin WebUserControl1: LoadPostData End iWebUserControl1: RaisePostDataChange WebForm1: OnPreRender WebUserControl1: OnPreRender WebForm1: SavedViewState WebUserControl1: SaveViewState 在WebForm1页面的Button1_Click事件中用代码Load用户控件WebUserControl1时的事件顺序:WebForm1_Init Page_Load Button1_Click WebUserControl1_Init WebUserControl1_Load WebForm1_PreRender WebUserControl1_PreRender WebUserControl1_Unload WebForm1_Unload 在WebForm1页面的Page_Load事件中用代码Load用户控件WebUserControl1,WebUserControl1又在Page_Load事件中用代码Load用户控件WebUserControl2时的事件顺序:WebForm1_Init Page_Load WebUserControl1_Init WebUserControl1_Load WebUserControl2_Init WebUserControl2_Load WebForm1_PreRender WebUserControl1_PreRender WebUserControl2_PreRender WebUserControl2_Unload WebUserControl1_Unload WebForm1_Unload

C# 自定义控件制作和使用实例

C# 自定义控件制作和使用实例 第一步:新建一个控件库项目:myControl 第二步:从工具箱里面拖动1个PictureBox、1个Button、6个Lable控件到用户界面上,布局如下: 如上图,设置pictureBox的Name为picBox,背景为白色,Button的Name为btnOpen,

另外靠左的三个Lable的Text属性分别为:文件名称,文件大小,文件尺寸,靠右的三个Lable的Name分别为:lblName, lblLength, lblSize. 第三步:添加处理程序代码 在btnOpen的Click事件写入代码,打开一个打开文件对话框,选择一个图形文件,打开并将它显示在picBox上。 private void btnOpen_Click(object sender, EventArgs e) { OpenFileDialog ofdPic = new OpenFileDialog(); ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF)|*.jpg;*.jpeg;*.gif"; ofdPic.FilterIndex = 1; ofdPic.RestoreDirectory = true; ofdPic.FileName = ""; if (ofdPic.ShowDialog() == DialogResult.OK) { string sPicPaht = ofdPic.FileName.ToString(); FileInfo fiPicInfo = new FileInfo(sPicPaht); long lPicLong = fiPicInfo.Length / 1024; string sPicName = https://www.360docs.net/doc/f110539487.html,; string sPicDirectory = fiPicInfo.Directory.ToString(); string sPicDirectoryPath = fiPicInfo.DirectoryName; Bitmap bmPic = new Bitmap(sPicPaht); if (lPicLong > 400) { MessageBox.Show("此文件大小為" + lPicLong + "K;已超過最大限制的K范圍!"); } else { Point ptLoction = new Point(bmPic.Size); if (ptLoction.X > picBox.Size.Width || ptLoction.Y > picBox.Size.Height) { picBox.SizeMode = PictureBoxSizeMode.Zoom; } else { picBox.SizeMode = PictureBoxSizeMode.CenterImage; } } picBox.LoadAsync(sPicPaht); lblName.Text = sPicName; lblLength.Text = lPicLong.ToString() + " KB"; lblSize.Text = bmPic.Size.Width.ToString() + "×" + bmPic.Size.Height.ToString(); }

.NET4.0 用户控件的概述

https://www.360docs.net/doc/f110539487.html,4.0 用户控件的概述 用户控件是页面的一段,包含了静态HTML代码和服务器控件。其优点在于一旦创建了一个用户控件,可以在同一个应用的多个页面中重用。并且,用户可以在Web用户控件中,添加该控件的属性、事件和方法。 1.什么是用户控件 用户控件(后缀名为.ascx)文件与https://www.360docs.net/doc/f110539487.html,网页窗体(后缀名为.aspx)文件相似。就像网页窗体一样,用户控件由用户接口部分和控制标记组成,而且可以使用嵌入脚本或者.cs代码后置文件。用户控件能够包含网页所能包含的任何东西,包括静态HTML内容和https://www.360docs.net/doc/f110539487.html,控件,它们也作为页面对象(Page Object)接收同样的事件(如Load和PreRender),也能够通过属性(如Application,Session,Request 和Response)来展示https://www.360docs.net/doc/f110539487.html,内建对象。 用户控件使程序员能够很容易地跨Web应用程序划分和重复使用公共UI功能。与窗体页相同,用户可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件。 此外,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。与服务器端包含文件(SSI)相比,用户控件通过访问由https://www.360docs.net/doc/f110539487.html,提供的对象模型支持,使程序员具有更大的灵活性。程序员可以对在控件中声明的任何属性进行编程,而不只是包含其他文件提供的功能,这与其他任何https://www.360docs.net/doc/f110539487.html,服务器控件一样。 此外,可以独立于包含用户控件的窗体页中除该控件以外的部分来缓存该控件的输出。这一技术称作片段缓存,适当地使用该技术能够提高站点的性能。例如,如果用户控件包含提出数据库请求的https://www.360docs.net/doc/f110539487.html,服务器控件,但该页的其余部分只包含文本和在服务器上运行的简单代码,则程序员可以对用户控件执行片段缓存,以改进应用程序的性能。 用户控件与普通网页页面的区别是: ●用户控件开始于控件指令而不是页面指令。 ●用户控件的文件后缀是.ascx,而不是.aspx。它的后置代码文件继承于 https://www.360docs.net/doc/f110539487.html,erControl类.事实上,UserControl类和Page类都继承于同一个 TemplateControl类,所有它们能够共享很多相同的方法和事件。 ●没有@Page指令,而是包含@Control指令,该指令对配置及其他属性进行定义。 ●用户控件不能被客户端直接访问,不能作为独立文件运行,而必须像处理任何控件一 样,将它们添加到https://www.360docs.net/doc/f110539487.html,页中。 ●用户控件没有html、body、form元素,但同样可以在用户控件上使用HTML元素和 Web控件。 用户可以将常用的内容或者控件以及控件的运行程序逻辑,设计为用户控件,

[C#] - 用户自定义控件(含源代码)-透明文本框=

[C#] - 用户自定义控件(含源代码)-透明文本框透明文本框 由于在https://www.360docs.net/doc/f110539487.html,只能下载*.dll的文件,没有代码,所以特意发出源代码。 using System; using System.Collections; using https://www.360docs.net/doc/f110539487.html,ponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; using System.Drawing.Imaging; namespace ZBobb { ///

/// AlphaBlendTextBox: A .Net textbox that can be translucent to the background. /// (C) 2003 Bob Bradley / ZBobb@https://www.360docs.net/doc/f110539487.html, /// public class AlphaBlendTextBox : System.Windows.Forms.TextBox { #region private variables private uPictureBox myPictureBox; private bool myUpToDate = false; private bool myCaretUpToDate = false; private Bitmap myBitmap; private Bitmap myAlphaBitmap; private int myFontHeight = 10; private System.Windows.Forms.Timer myTimer1; private bool myCaretState = true; private bool myPaintedFirstTime = false; private Color myBackColor = Color.White; private int myBackAlpha = 10; /// /// Required designer variable. /// private https://www.360docs.net/doc/f110539487.html,ponentModel.Container components = null; #endregion// end private variables #region public methods and overrides public AlphaBlendTextBox() { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); // TODO: Add any initialization after the InitializeComponent call this.BackColor = myBackColor; this.SetStyle(https://www.360docs.net/doc/f110539487.html,erPaint, false); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); this.SetStyle(ControlStyles.DoubleBuffer, true);

北理工20年春季《https://www.360docs.net/doc/f110539487.html,开发技术》在线作业_2.doc

1.能够连接“层次化数据”的数据源控件是()。 A.SqlDataSource控件和XmlDataSource控件 B.SiteMapDataSource控件和LinqDataSource控件 C.SiteMapDataSource控件和XmlDataSource控 件 D.SqlDataSource控件和LinqDataSource控件 【参考答案】: C 2.APP_Code文件夹用来存储()。 A.数据库文件 B.资源文件 C.自定义类文件 D.主题文件 【参考答案】: C 3.下面不是HttpResponse对象的方法是()。 A.Write() B.Redirect() C.Cookie() D.Clear() 【参考答案】: C 4.下面关于用户控件的说法错误的是()。 A.一个用户控件不能在同一个网页中多次使用 B.用户控件支持可视化开 发 C.可以将已有的aspx文件更改为ascx文件 D.在每个使用用户控件的Web应用程序中,都必须保存一个该控件的副本 【参考答案】: A 5.可以使用属性()禁用主题。 A.EnabledTheme B.EnableThemes C.EnableTheming D.EnabledTheme s 【参考答案】: C 6.GridView控件要实现分页功能需要设置属性()值为True。 A.AllowPages B.AllowPaged C.AllowPaging D.AllowPage 【参考答案】: C

7.HttpRequest对象的()数据集合用于从查询字符串中读取用户提 交的数据。 A.QueryString B.Browser C.ServerVariables D.ClientCertificat e 【参考答案】: A 8.创建一个Cookie的正确代码()。 A.Response.Cookies["userName"]="apple" B.Cookies["userName"]="appl e" C.Cookies["userName"].Value="apple" D.Response.Cookies["user Name"].Value="apple" 【参考答案】: D 9.使用存储过程可以()。 A.提高数据库安全性 B.加快执行速度 C.降低网络通信量 D.使分工更复杂 【参考答案】: D 10.下面关于状态管理的说法错误的是()。 A.客户端状态管理将信息保留在客户端计算机上 B.服务器端状态管理将信息保留在服务器上 C.Web 窗体页是有状态的 D.状态管理可以对同一页或不同页的多个请求维护状态和页信息 【参考答案】: C 11.下面关于存储过程的说法错误的是()。 A.公共数据存储过程可以被多个 Web 应用程序调用 B.存储过程被解释执行 C.一个存储过程可以执行上百条 SQL 语句 D.存储过程或数据库结构的更改不会影响 Web 应用程序 【参考答案】: B

C#自定义控件开发

自定义控件开发 一般而言,Visual Studio 2005中自带的几十种控件已经足够我们使用了,但是,在一些特殊的需求中,可能需要一些特殊的控件来与用户进行交互,这时,就需要我们自己开发新的、满足用户需求的控件。(源码网整理:https://www.360docs.net/doc/f110539487.html,) 要开发自己的控件,有几种方法: ?复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,来满足用户的需求。 ?扩展控件(Extended Controls):就是在现有的控件基础上,派生出一个新的控件,增加新的功能,或者修改原有功能,来满足用户需求。 ?自定义控件(Custom Controls):就是直接从System.Windows.Forms.Control 类派生,也就是说完全由自己来设计、实现一个全新的控件,这是最灵活、最强大的方法,但是,对开发者的要求也是最高的。要实现一个自定义控件,必须为Control类的的OnPaint事件编写代码,在OnPaint事件中实现自定义控件的绘制工作。同时,还可以重写Control类的WndProc方法,来处理底层的Windows消息。所以说,要实现一个自定义控件,对开发者的要求较高,要求开发者必须了解GDI+和Windows API的知识。 下面我们就分别给大家介绍这三种方法。 ?复合控件(Composite Controls) 复合控件实际上是控件的集合,类似于堆积木。因此,可以按照用户的需求,把VS 2005工具箱中的控件任意组合起来,形成一个复合控件。在以后使用中,将生成的这个复合控件作为一个控件来对待。 复合控件一般都是从UserControl类派生而来,因此复合控件(用户控件)可以在“UserControl测试容器”中进行测试。 复合控件的创建步骤: 第一步:新建一个Windows控件库项目“CompositeControlDemo”

C#自定义控件实现控件随窗口大小改变

1.新建用户控件,取名MyForm。 2.将默认的UserControl改成Form 3.在类中添加以下代码 private float X, Y; //获得控件的长度、宽度、位置、字体大小的数据 private void setTag(Control cons)//Control类,定义控件的基类 { foreach (Control con in cons.Controls) { con.Tag = con.Width + ":"+ con.Height + ":"+ con.Left + ":"+ con.Top + ":" + con.Font.Size;//获取或设置包含有关控件的数据的对象

if (con.Controls.Count > 0) setTag(con);//递归算法 } } private void setControls(float newx, float newy, Control cons)//实现控件以及字体的缩放 { foreach (Control con in cons.Controls) { string[] mytag = con.Tag.ToString().Split(new char[] { ':' }); float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a; a = Convert.ToSingle(mytag[1]) * newy; con.Height = (int)(a); a = Convert.ToSingle(mytag[2]) * newx; con.Left = (int)(a); a = Convert.ToSingle(mytag[3]) * newy; con.Top = (int)(a); Single currentSize = Convert.ToSingle(mytag[4]) * newy; con.Font = new Font(https://www.360docs.net/doc/f110539487.html,, currentSize, con.Font.Style, con.Font.Unit); if (con.Controls.Count > 0) { setControls(newx, newy, con);//递归 } } } private void MyForm_Resize(object sender, EventArgs e) { float newx = (this.Width) / X;//当前宽度与变化前宽度之比 float newy = this.Height / Y;//当前高度与变化前宽度之比 setControls(newx, newy, this); this.Text = this.Width.ToString() + ""+ this.Height.ToString(); //窗体标题显示长度和宽度

Web用户自定义控件的开发

子任务2:页面顶部和底部设计(https://www.360docs.net/doc/f110539487.html, Web服务器控件实现) 对于页面顶部控件WebUserControl.ascx和页面底部控件WebUserControl2.ascx,添加https://www.360docs.net/doc/f110539487.html, Web服务器控件来实现设计效果。 (1)启动Visual Studio2008,打开网站文件Website1。 (2)单击“添加新项”按钮,在弹出的窗口中选择“Web用户控件”,然后单击“添加”按钮即可为当前网站文件添加一个用户自定义控件,该控件的名称为:WebUserControl.ascx。 (3)在控件添加完成后,系统自动打开该控件的设计窗口,有“设计”模式和“源”模式两种模式可供开发人员使用。 (4)切换到“设计”模式,为WebUserControl添加一个Table控件,在属性窗口设置Rows属性值,如图2-30所示。 图2-30 Table控件的属性窗口 (5)在打开的“TableRow集合编辑器”窗口为Table添加1个TableRow,如图2-31所示。

图2-31 “TableRow集合编辑器”窗口图2-32 “TableCell集合编辑器”窗口(6)再单击Cells,在打开的“TableCell集合编辑器”窗口为TableRow添加2个TableCell,如图2-32所示。 (7)然后切换到“源”模式,编写https://www.360docs.net/doc/f110539487.html,代码,为每一个TableCell分别添加一个Image控件,设置其属性,相关代码如下。 (8)切换到“设计”模式,为WebUserControl2再添加一个Table控件,并设置其为1个TableRow,6个TableCell。 (9)切换到“源”模式,编写https://www.360docs.net/doc/f110539487.html,代码,为每一个TableCell分别添加一个HyperLink 超链接控件,相关代码如下:

C#创建用户控件

演练:使用Visual C# 创作用户控件 Visual Studio .NET 2003 用户控件提供了一种创建和重用自定义图形界面的方法。用户控件本质上是具有可视化表示形式的组件。因此,它可能包含一个或多个Windows 窗体控件、组件或代码块,它们能够通过验证用户输入、修改显示属性或执行作者所需的其他任务来扩展功能。可以按照与其他控件相同的方式,将用户控件置于Windows 窗体中。在本演练的第一部分,创建一个名为ctlClock 的简单用户控件。在本演练的第二部分通过继承扩展ctlClock 的功能。 创建项目 创建新的项目时应指定其名称,以设置根命名空间、程序集名称和项目名称,并确保默认组件将位于正确的命名空间中。 创建ctlClockLib 控件库和ctlClock 控件 1.在“文件”菜单上,指向“新建”,然后选择“项目”以打开“新建项目”对话框。 2.从“C# 项目”列表中选择“Windows 控件库”项目模板,然后在“名称”框中键入ctlClockLib。 注意“Windows 控件库”模板在Visual C# .NET 的标准版中不可用。有关更多信息,请参 见Visual C# 标准版的功能。 默认情况下,项目名称ctlClockLib也被分配到根命名空间中。根命名空间用于限定程序集中的组件名。例如,如果两个程序集都提供名为ctlClock 的组件,则可以使用 ctlClockLib.ctlClock指定ctlClock 组件。在解决方案资源管理器中,右击 “UserControl1”并从快捷菜单中选择“查看代码”。 3.找到Class语句public class UserControl1,将UserControl1更改为ctlClock 以更改组件的名称。 注意默认情况下,用户控件从系统提供的UserControl类继承。UserControl类提供所 有用户控件要求的功能,并实现标准方法和属性。 4.找到构造函数public UserControl1(),将UserControl1 更改为ctlClock。 5.在解决方案资源管理器中,单击“UserControl1”,然后在“属性”窗口中,将FileName属性 更改为ctlClock.cs。 6.从“文件”菜单中,选择“全部保存”来保存项目。 将Windows 控件和组件添加到用户控件

ASP如何制作用户自定义控件

1.打开VS2008-新建一个工程-选译ASP。NET服务器控件 2.自动生成一个文件,打代码拷进去,调试好程序 3.点击“生成菜单-生成XX” 4.到工程目录\bin\Debug 找到dll文件把它拷到一个固定目录里 如:DotNet_DLL里 ============附带一个我重写Repeater的代码=================== using System; using System.Collections.Generic; using https://www.360docs.net/doc/f110539487.html,ponentModel; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using System.Data.OleDb; namespace lwf_MVC.lwf_Controls { [DefaultProperty("pageIndex")] [ToolboxData("<{0}:Repeater ID=\"Rep_list\" runat=\"server\" EnableViewState=\"false\" DisplayPageing=\"Always\"> ")] public class Repeater : System.Web.UI.WebControls.Repeater { private int _recordcount = 0; private int _pageSize = 0; private int _pageIndex = 1; private string _PID = ""; private string _CssClass = "CssPage"; //输出数据流时设一个样式给它样式名为CssPage private object _DataSourceList; private PagedDataSource _pds = new PagedDataSource(); //public bool _DisplayPageing; public MyEnum _DisplayPageing; private MyEnumLanguage _Language;

验证控件

肇庆学院计算机学院 https://www.360docs.net/doc/f110539487.html,动态网站开发实验报告实验名称验证控件 班级姓名学号实验地点日期成绩 一、实验目的: 掌握使用验证控件的方法。 二、实验环境: Windows 系列操作系统的计算机,软件visual studio 2010。 三、实验内容、步骤、实验结果与分析: 见附页 五、实验总结 基本掌握了怎么使用验证控件的方法。

实验要求: 任务一验证用户注册页面信息 (1)问题描述:设计用户注册页面,并对用户在注册时输入的数据进行检验,通过检验之后再向服务器发送请求,进行以后的操作。用户需要输入姓名、职业、 年收入和年存款、电话号码等信息。 (2)用户注册页面具体验证内容说明: ◆年收入要介于10,000与100,000之间,年存款应低于年收入 ◆ID号要符合ACC000这样的格式,即第一位是A(大写),二三位是大写B-Z 中的任意字母,最后三位要求是数字。 ◆用户输入两次密码必须一致 ◆电话号码要满足这样的格式:(010)12345678或者(0756)-1 234567,即区号必须为3或4位数字,并用“圆括号”分隔,电话号码为7 或者8位, ◆身份证号为15或18位数字,如果是18位则最后一位可以是X ◆邮政编码为6位数字 ◆Email要符合电子邮箱的规则 ◆个人网页要符合网址的写法 ◆中文名字必须是简体中文,并且是2到4个字 ◆年存款最多为年收入的80% (3)创建工程,并设计用户注册界面,可参照下图4-1所示。 图4-1 用户注册界面设计图(4)在用户注册页面中的用户输入信息控件(TextBox控件)及主要控件设置参见下表4-1 控件属性名称属性值Lblel ID LblMessage Textbox ID TxtID Textbox ID TxtPWD Textbox ID TxtPWD2 Textbox ID TxtEmail Textbox ID TxtYearIncome Textbox ID TxtYearSave Textbox ID TxtHomePage Textbox ID TxtTel Textbox ID TxtIDCard Textbox ID TxtZip Textbox ID TxtSimpName

C#制作WinForm用户自定义控件实例教程

C#制作WinForm用户自定义控件实例教程 本文将教大家如何使用C#开发WinForm用户自定义控件,自定义控件有好多好处,下面请跟本文一同来学习下吧。 .Nt用户自定义控件继承UserControl类,设计很简单的,像平时在窗体上拖控件一样。 操作步骤: 1. 建立一个工程,添加用户控件。 2.在打开的窗体内输入控件名称,如:"ucButton",按确定按钮。接下来在空白区域拖放3个.Net控件。 如下图:

3.代码 C# code ///

/// C#.Net 设计用户自定义控件 /// /// [ToolboxBitmap(typeof(CustomControl.ucButton), "ucButton.bmp")] public partial class ucButton : UserControl { private bool _IsFocused = false; //标记按钮是否为焦点状态 public ucButton() { InitializeComponent(); this.DoHideFocusedTag(); this.MyCatpionText = https://www.360docs.net/doc/f110539487.html,; } private EventHandler _OnButtonClick = null; private string _MyCatpionText = "ucButton1"; /// /// 按钮标题 /// [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] [DefaultValue("ucButton1")] public string MyCatpionText { get { return _MyCatpionText; } set { _MyCatpionText = value; lblCaption.Text = _MyCatpionText; } } /// /// 用户自定义Click事件 /// [EditorBrowsable(EditorBrowsableState.Always)] [Browsable(true)] public event EventHandler OnButtonClick { add { _OnButtonClick = new EventHandler(value); } remove { _OnButtonClick -= new EventHandler(value); } } private void lblCaption_Click(object sender, EventArgs e) { //转移Click事件, 触发用户自定义事件 if (_OnButtonClick != null) _OnButtonClick(this, e); } private void lblCaption_MouseDown(object sender, MouseEventArgs e) { if (_IsFocused) { lblCaption.Font = new Font(lblCaption.Font.FontFamily, lblCaption.Font.Size, FontStyle.Bold); } } private void lblCaption_MouseUp(object sender, MouseEventArgs e) { if (_IsFocused) { lblCaption.Font = new Font(lblCaption.Font.FontFamily, lblCaption.Font.Size, FontStyle.Regular); } } private void ucButton_SizeChanged(object sender, EventArgs e) { lblUnderLine.Top = this.Height - 1; lblUnderLine.Width = this.Width - 15; } /// /// 还原按钮状态 /// public void DoHideFocusedTag() { this.pictureBox1.Image = global::vjsdn.CustomControl.Properties.Resources.GrayTag; this.lblUnderLine.Visible = false; lblCaption.ForeColor = Color.Black; } /// /// 设计按钮为焦点状态 /// public void DoShowFocusedTag() { this.pictureBox1.Image =

vb用户控件制作讲解与实例

1.定义控件的属性、事件和方法,其中属性是最常使用的。 2.保存和读取中间用户设置的属性值。 3.为达到你的预定目的而调用的各种技术手段。 在用户控件中定义的属性、事件、方法,其性质都必须是公用的,也就是说,只有用Public 来定 义,这样你才能在主程序代码中使用这些事件和方法,以及设置或获取这些属性值,也只有公用的属性 才会在窗体页面相关控件的属性窗口显示出来。 一、属性 属性是用户控件最基本的东东,用户控件可以没有事件,可以没有方法,但不能没有属性(当然, 技术上来说是可以没有属性的,但这样的控件使中间用户无法进行任何设置,是没有什么意义的)。那 么,如何定义用户控件的属性呢?为用户控件添加属性有两种办法: 1.公用变量法: public 变量名称as 类型 这里的变量名称就是属性名称。这样定义的属性一般不会保存属性值,所以常常用作只读属性,在 笔者的用户控件中,用于对主程序返回一个必要的值。例如“四则运算”控件中的“ComputeAnswer” 属性: Public ComputeAnswer As String 它返回的是计算结果,而计算结果是不需要保存在控件中的,所以把它用公用变量法定义。再例如 消息框控件中的FeedValue 属性: Public FeedValue As Integer '返回值 它返回最终用户选中的消息框按纽的编号,这个编号也只需要在主程序中处理,而无需保存在控件 中,所以也用公用变量法定义成只读属性。 2.property 过程法: public property Get 过程名称() as 类型 …… end property public property Let 过程名称(new值as 类型) …… end property 这里的过程名称就是属性名称。 而property 过程法又有两种:一种是如上所述的标准过程法,另一种就是枚举法。 ㈠标准过程法 这是用得最多的一种属性定义方法。在用户控件的代码页面选中“工具→添加过程”,会跳出一个 对话框,然后在单选按纽中选择“属性”,再在“名称”栏中输入属性名,点击确定,VB 就会自动生成

DevExpress基础验证控件

DevExpress 的验证控件 分类:DevExpress2012-08-09 23:44 975人阅读评论(1) 收藏举报1. DXErrorProvider:错误提示控件,用法类似于VS的winform控件中的ErrorProvider。 下面为一个使用实例,验证文本框输入是否为数字: ①.添加System.Text.RegularExpressions引用。 ②.在设计视图上拖一个textEdit控件textEdit1。 ③.验证输入是否为数字,不是显示错误提示。 [html]view plaincopyprint? 1.public bool IsNumeric(string sNumeric) 2.{ 3. return (new Regex("^[\\+\\-]?[0-9]*\\.?[0-9]+$")).IsMatch(sNumeric) ; 4.} 5.private void simpleButton1_Click(object sender, EventArgs e) 6.{ 7. InitValidationRules(); 8. dxErrorProvider1.ClearErrors(); 9. if (IsNumeric(this.textEdit1.Text)==false) 10. { 11. dxErrorProvider1.SetError(textEdit1, "输入要为数字! ");//DXErrorProvider.SetError(验证的控件,错误提示) 12. } 13.} 2.DxValidationProvider:验证控件,类似于VS的web控件中的"验证控件" 下面为DxValidationProvider使用实例: ①.添加DevExpress.XtraEditors.DXErrorProvider引用。 ②.在设计视图上拖两个textEdit控件textEdit2和textEdit3。 ③.实现验证textEdit2不可为空,textEdit3输入值在0-100之间: [csharp]view plaincopyprint? 1.private void InitValidationRules() 2.{ 3. ConditionValidationRule notEmptyValidationRule = new ConditionVal idationRule(); 4. notEmptyValidationRule.ConditionOperator = ConditionOperator.IsNo tBlank;//验证条件 5. notEmptyValidationRule.ErrorText = "此栏不能为空!";//提示信息

C#自定义控件的详细的开发流程(程序和图解)1

C#中自定义控件开发 要开发自己的控件,有几种方法: ?复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,来满足用户的需求。 ?扩展控件(Extended Controls):就是在现有的控件基础上,派生出一个新的控件,增加新的功能,或者修改原有功能,来满足用户需求。 ?自定义控件(Custom Controls):就是直接从System.Windows.Forms.Control 类派生,也就是说完全由自己来设计、实现一个全新的控件,这是最灵活、最强大的方法,但是,对开发者的要求也是最高的。要实现一个自定义控件,必须为Control类的的OnPaint事件编写代码,在OnPaint事件中实现自定义控件的绘制工作。同时,还可以重写Control类的WndProc方法,来处理底层的Windows消息。所以说,要实现一个自定义控件,对开发者的要求较高,要求开发者必须了解GDI+和Windows API的知识。 下面我们就分别给大家介绍这三种方法。 ?复合控件(Composite Controls) 复合控件实际上是控件的集合,类似于堆积木。因此,可以按照用户的需求,把VS 2005工具箱中的控件任意组合起来,形成一个复合控件。在以后使用中,将生成的这个复合控件作为一个控件来对待。 复合控件一般都是从UserControl类派生而来,因此复合控件(用户控件)可以在“UserControl测试容器”中进行测试。 复合控件的创建步骤: 第一步:新建一个Windows控件库项目“CompositeControlDemo” 第二步:向复合控件中添加Visual Studio 2005中的控件组合。

相关文档
最新文档