<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=ASP.NET_Tutorial%2FCustom_Controls%2FIntroduction</id>
		<title>ASP.NET Tutorial/Custom Controls/Introduction - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=ASP.NET_Tutorial%2FCustom_Controls%2FIntroduction"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Introduction&amp;action=history"/>
		<updated>2026-04-29T19:24:44Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Introduction&amp;diff=3306&amp;oldid=prev</id>
		<title> в 15:30, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Introduction&amp;diff=3306&amp;oldid=prev"/>
				<updated>2010-05-26T15:30:57Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:30, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Introduction&amp;diff=3307&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Introduction&amp;diff=3307&amp;oldid=prev"/>
				<updated>2010-05-26T12:00:18Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Differences between user controls and web pages==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
User controls use the file extension .ascx instead of .aspx&lt;br /&gt;
User controls&amp;quot; code-behind files inherit from the System.Web.UI.UserControl class. &lt;br /&gt;
The .ascx file for a user control begins with a &amp;lt;%@ Control %&amp;gt; directive instead of a &amp;lt;%@ Page %&amp;gt; directive.&lt;br /&gt;
User controls can&amp;quot;t be requested directly by a web browser. &lt;br /&gt;
Instead, they must be embedded inside other web pages.&lt;br /&gt;
&lt;br /&gt;
File: Control.ascx&lt;br /&gt;
&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;Control.ascx.cs&amp;quot; Inherits=&amp;quot;Footer&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;lblFooter&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
File: Control.ascx.cs&lt;br /&gt;
using System;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Configuration;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Web;&lt;br /&gt;
using System.Web.Security;&lt;br /&gt;
using System.Web.UI;&lt;br /&gt;
using System.Web.UI.WebControls;&lt;br /&gt;
using System.Web.UI.WebControls.WebParts;&lt;br /&gt;
using System.Web.UI.HtmlControls;&lt;br /&gt;
public partial class Footer : System.Web.UI.UserControl&lt;br /&gt;
{&lt;br /&gt;
    protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        lblFooter.Text = &amp;quot;This page was served at &amp;quot;;&lt;br /&gt;
        if (format == FooterFormat.LongDate)&lt;br /&gt;
        {&lt;br /&gt;
            lblFooter.Text += DateTime.Now.ToLongDateString();&lt;br /&gt;
        }&lt;br /&gt;
        else if (format == FooterFormat.ShortTime)&lt;br /&gt;
        {&lt;br /&gt;
            lblFooter.Text += DateTime.Now.ToShortTimeString();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public enum FooterFormat&lt;br /&gt;
    { LongDate, ShortTime }&lt;br /&gt;
    private FooterFormat format = FooterFormat.LongDate;&lt;br /&gt;
    public FooterFormat Format&lt;br /&gt;
    {&lt;br /&gt;
        get { return format; }&lt;br /&gt;
        set { format = value; }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
File: Default.aspx&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;FooterHost&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;nfex&amp;quot; TagName=&amp;quot;Footer&amp;quot; Src=&amp;quot;Control.ascx&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Footer Host&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
        &amp;lt;h2&amp;gt;A Page With a Configurable Footer&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
    &amp;lt;hr /&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;asp:RadioButton id=&amp;quot;optShort&amp;quot; runat=&amp;quot;server&amp;quot; GroupName=&amp;quot;Format&amp;quot; Text=&amp;quot;Short Format&amp;quot;&amp;gt;&amp;lt;/asp:RadioButton&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
    &amp;lt;asp:RadioButton id=&amp;quot;optLong&amp;quot; runat=&amp;quot;server&amp;quot; GroupName=&amp;quot;Format&amp;quot; Text=&amp;quot;Long Format&amp;quot;&amp;gt;&amp;lt;/asp:RadioButton&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
    &amp;lt;asp:Button id=&amp;quot;cmdRefresh&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Refresh&amp;quot;&amp;gt;&amp;lt;/asp:Button&amp;gt;&lt;br /&gt;
    &amp;lt;hr /&amp;gt;&lt;br /&gt;
    &amp;lt;br /&amp;gt;&lt;br /&gt;
    &amp;lt;nfex:Footer id=&amp;quot;Footer1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/nfex:Footer&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
File: Default.aspx.cs&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Data;&lt;br /&gt;
using System.Configuration;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Web;&lt;br /&gt;
using System.Web.Security;&lt;br /&gt;
using System.Web.UI;&lt;br /&gt;
using System.Web.UI.WebControls;&lt;br /&gt;
using System.Web.UI.WebControls.WebParts;&lt;br /&gt;
using System.Web.UI.HtmlControls;&lt;br /&gt;
public partial class FooterHost : System.Web.UI.Page&lt;br /&gt;
{&lt;br /&gt;
    protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        if (optLong.Checked)&lt;br /&gt;
        {&lt;br /&gt;
            Footer1.Format = Footer.FooterFormat.LongDate;&lt;br /&gt;
        }&lt;br /&gt;
        else if (optShort.Checked)&lt;br /&gt;
        {&lt;br /&gt;
            Footer1.Format = Footer.FooterFormat.ShortTime;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Exposing Properties from a User Control==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
File: Control.ascx&lt;br /&gt;
&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; ClassName=&amp;quot;PropertyRandomImage&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Import Namespace=&amp;quot;System.IO&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    private string _imageFolderPath = &amp;quot;~/Images&amp;quot;;&lt;br /&gt;
    public string ImageFolderPath&lt;br /&gt;
    {&lt;br /&gt;
        get { return _imageFolderPath; }&lt;br /&gt;
        set { _imageFolderPath = value; }&lt;br /&gt;
    }&lt;br /&gt;
    void Page_Load()&lt;br /&gt;
    {&lt;br /&gt;
        string imageToDisplay = GetRandomImage();&lt;br /&gt;
        imgRandom.ImageUrl = Path.rubine(_imageFolderPath, imageToDisplay);&lt;br /&gt;
        lblRandom.Text = imageToDisplay;&lt;br /&gt;
    }&lt;br /&gt;
    private string GetRandomImage()&lt;br /&gt;
    {&lt;br /&gt;
        Random rnd = new Random();&lt;br /&gt;
        string[] images = Directory.GetFiles(MapPath(&amp;quot;~/Images&amp;quot;), &amp;quot;*.jpg&amp;quot;);&lt;br /&gt;
        string imageToDisplay = images[rnd.Next(images.Length)];&lt;br /&gt;
        return Path.GetFileName(imageToDisplay);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;asp:Image&lt;br /&gt;
    id=&amp;quot;imgRandom&amp;quot;&lt;br /&gt;
    Width=&amp;quot;300px&amp;quot;&lt;br /&gt;
    Runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label&lt;br /&gt;
    id=&amp;quot;lblRandom&amp;quot;&lt;br /&gt;
    Runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
File: ShowDeclarative.aspx&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;user&amp;quot; TagName=&amp;quot;PropertyRandomImage&amp;quot; Src=&amp;quot;~/Control.ascx&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot;&lt;br /&gt;
&amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;head id=&amp;quot;Head1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Show Declarative&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
    &amp;lt;user:PropertyRandomImage&lt;br /&gt;
        ID=&amp;quot;PropertyRandomImage1&amp;quot;&lt;br /&gt;
        ImageFolderPath=&amp;quot;~/Images2&amp;quot;&lt;br /&gt;
        Runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Get value from asp.net page control (VB.net)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
File: index.aspx&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;nfexASP&amp;quot; TagName=&amp;quot;LoginForm&amp;quot; src=&amp;quot;Control.ascx&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
   sub Page_Load(Sender as Object, e as EventArgs)&lt;br /&gt;
      lblMessage.Text = &amp;quot;Properties of the user control: &amp;quot; &amp;amp; _&lt;br /&gt;
         &amp;quot;&amp;lt;br&amp;gt;id: &amp;quot; &amp;amp; LoginForm1.id &amp;amp; &amp;quot;&amp;lt;br&amp;gt;&amp;quot; &amp;amp; _&lt;br /&gt;
         &amp;quot;BackColor: &amp;quot; &amp;amp; LoginForm1.BackColor &amp;amp; &amp;quot;&amp;lt;br&amp;gt;&amp;quot; &amp;amp; _&lt;br /&gt;
         &amp;quot;Username: &amp;quot; &amp;amp; LoginForm1.Username &amp;amp; &amp;quot;&amp;lt;br&amp;gt;&amp;quot; &amp;amp; _&lt;br /&gt;
         &amp;quot;Password: &amp;quot; &amp;amp; LoginForm1.Password&lt;br /&gt;
   end sub&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&lt;br /&gt;
   &amp;lt;form runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;nfexASP:LoginForm id=&amp;quot;LoginForm1&amp;quot; runat=&amp;quot;server&amp;quot; &lt;br /&gt;
         Password=&amp;quot;MyPassword&amp;quot;&lt;br /&gt;
         Username=&amp;quot;Chris&amp;quot;&lt;br /&gt;
         BackColor=&amp;quot;Beige&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/form&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   &amp;lt;asp:Label id=&amp;quot;lblMessage&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
File: Control.ascx&lt;br /&gt;
&amp;lt;script language=&amp;quot;VB&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
   public BackColor as String = &amp;quot;White&amp;quot;&lt;br /&gt;
   public property UserName as string&lt;br /&gt;
      Get&lt;br /&gt;
         UserName = User.Text&lt;br /&gt;
      End Get&lt;br /&gt;
      Set&lt;br /&gt;
         User.Text = value&lt;br /&gt;
      End Set&lt;br /&gt;
   end property&lt;br /&gt;
   public property Password as string&lt;br /&gt;
      Get&lt;br /&gt;
         Password = Pass.Text&lt;br /&gt;
      End Get&lt;br /&gt;
      Set&lt;br /&gt;
         Pass.Text = value&lt;br /&gt;
      End Set&lt;br /&gt;
   end property&lt;br /&gt;
   &lt;br /&gt;
   public sub Submit(obj as object, e as eventargs)&lt;br /&gt;
      lblMessage.Text = &amp;quot;Username: &amp;lt;b&amp;gt;&amp;quot; &amp;amp; User.Text &amp;amp; _&lt;br /&gt;
         &amp;quot;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;quot; &amp;amp; &amp;quot;Password: &amp;lt;b&amp;gt;&amp;quot; &amp;amp; Pass.Text &amp;amp; &amp;quot;&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
   end sub&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;background-color:white;font: 10pt verdana;border-width:1;border-style:solid;border-color:black;&amp;quot; &lt;br /&gt;
   cellspacing=15&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Login: &amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;ASP:TextBox id=&amp;quot;User&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;Password: &amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;ASP:TextBox id=&amp;quot;Pass&amp;quot; TextMode=&amp;quot;Password&amp;quot; &lt;br /&gt;
             runat=&amp;quot;server&amp;quot;/&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
   &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;ASP:Button Text=&amp;quot;Submit&amp;quot; runat=&amp;quot;server&amp;quot; &lt;br /&gt;
             OnClick=&amp;quot;Submit&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
   &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;ASP:Label id=&amp;quot;lblMessage&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Page component with code behind (VB.net)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;nfex&amp;quot; TagName=&amp;quot;Calculator&amp;quot; src=&amp;quot;Control.ascx&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&lt;br /&gt;
   &amp;lt;form runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;nfex:Calculator id=&amp;quot;Calc1&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
File: Control.ascx&lt;br /&gt;
&amp;lt;%@ Control Inherits=&amp;quot;CalculatorControl&amp;quot; src=&amp;quot;Control.ascx.vb&amp;quot; %&amp;gt;&lt;br /&gt;
Number 1: &amp;lt;asp:textbox id=&amp;quot;tbNumber1&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Number 2: &amp;lt;asp:textbox id=&amp;quot;tbNumber2&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;asp:button id=&amp;quot;btAdd&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;+&amp;quot; &lt;br /&gt;
   OnClick=&amp;quot;btOperator_Click&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;asp:button id=&amp;quot;btSubtract&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;-&amp;quot; &lt;br /&gt;
   OnClick=&amp;quot;btOperator_Click&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;asp:button id=&amp;quot;btMultiply&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;*&amp;quot; &lt;br /&gt;
   OnClick=&amp;quot;btOperator_Click&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;asp:button id=&amp;quot;btDivide&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;/&amp;quot; &lt;br /&gt;
   OnClick=&amp;quot;btOperator_Click&amp;quot;/&amp;gt;&lt;br /&gt;
The answer is: &lt;br /&gt;
&amp;lt;asp:label id=&amp;quot;lblMessage&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt;&lt;br /&gt;
File: Control.ascx.vb&lt;br /&gt;
&lt;br /&gt;
Imports System&lt;br /&gt;
Imports System.Web&lt;br /&gt;
Imports System.Web.UI&lt;br /&gt;
Imports System.Web.UI.WebControls&lt;br /&gt;
Public Class CalculatorControl : Inherits UserControl&lt;br /&gt;
   public lblMessage as Label&lt;br /&gt;
   public btAdd as Button&lt;br /&gt;
   public btSubtract as Button&lt;br /&gt;
   public btMultiply as Button&lt;br /&gt;
   public btDivide as Button&lt;br /&gt;
   public tbNumber1 as TextBox&lt;br /&gt;
   public tbNumber2 as TextBox&lt;br /&gt;
   &lt;br /&gt;
   Sub btOperator_Click(Sender as Object, e as EventArgs)&lt;br /&gt;
      lblMessage.Text = Operate(CType(Sender, Button).Text, _&lt;br /&gt;
         tbNumber1.Text, tbNumber2.Text).ToString&lt;br /&gt;
   End Sub&lt;br /&gt;
   &lt;br /&gt;
   private function Operate(op as string, number1 as string, number2 as string) as double&lt;br /&gt;
      select case op&lt;br /&gt;
         case &amp;quot;+&amp;quot;&lt;br /&gt;
            Operate = CInt(number1) + CInt(number2)&lt;br /&gt;
         case &amp;quot;-&amp;quot;&lt;br /&gt;
            Operate = CInt(number1) - CInt(number2)&lt;br /&gt;
         case &amp;quot;*&amp;quot;&lt;br /&gt;
            Operate = CInt(number1) * CInt(number2)&lt;br /&gt;
         case &amp;quot;/&amp;quot;&lt;br /&gt;
            Operate = CInt(number1) / CInt(number2)&lt;br /&gt;
      end select&lt;br /&gt;
   end function&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Page control with full qualified name(C#)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;MyControl&amp;quot; TagName=&amp;quot;View&amp;quot; Src=&amp;quot;Control.ascx&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
   void Page_Load(Object Sender, EventArgs e) {&lt;br /&gt;
      lblMessage.Text = &amp;quot;Page last viewed at &amp;quot; + DateTime.Now.ToString(&amp;quot;T&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&lt;br /&gt;
   &amp;lt;MyControl:View runat=&amp;quot;server&amp;quot; /&amp;gt;   &lt;br /&gt;
   &amp;lt;asp:Label id=&amp;quot;lblMessage&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
File: Control.ascx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ Control Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ OutputCache Duration=&amp;quot;30&amp;quot; VaryByParam=&amp;quot;none&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
   sub Page_Load(Sender as Object, e as EventArgs)&lt;br /&gt;
      lblMessage.Text = &amp;quot;Control last viewed at &amp;quot; &amp;amp; _&lt;br /&gt;
         DateTime.Now.ToString(&amp;quot;T&amp;quot;)&lt;br /&gt;
   end sub   &lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label id=&amp;quot;lblMessage&amp;quot; runat=&amp;quot;server&amp;quot;/&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Set the properties from user control programmatically.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
File: Control.ascx&lt;br /&gt;
&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; ClassName=&amp;quot;PropertyRandomImage&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Import Namespace=&amp;quot;System.IO&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    private string _imageFolderPath = &amp;quot;~/Images&amp;quot;;&lt;br /&gt;
    public string ImageFolderPath&lt;br /&gt;
    {&lt;br /&gt;
        get { return _imageFolderPath; }&lt;br /&gt;
        set { _imageFolderPath = value; }&lt;br /&gt;
    }&lt;br /&gt;
    void Page_Load()&lt;br /&gt;
    {&lt;br /&gt;
        string imageToDisplay = GetRandomImage();&lt;br /&gt;
        imgRandom.ImageUrl = Path.rubine(_imageFolderPath, imageToDisplay);&lt;br /&gt;
        lblRandom.Text = imageToDisplay;&lt;br /&gt;
    }&lt;br /&gt;
    private string GetRandomImage()&lt;br /&gt;
    {&lt;br /&gt;
        Random rnd = new Random();&lt;br /&gt;
        string[] images = Directory.GetFiles(MapPath(&amp;quot;~/Images&amp;quot;), &amp;quot;*.jpg&amp;quot;);&lt;br /&gt;
        string imageToDisplay = images[rnd.Next(images.Length)];&lt;br /&gt;
        return Path.GetFileName(imageToDisplay);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;asp:Image&lt;br /&gt;
    id=&amp;quot;imgRandom&amp;quot;&lt;br /&gt;
    Width=&amp;quot;300px&amp;quot;&lt;br /&gt;
    Runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;asp:Label&lt;br /&gt;
    id=&amp;quot;lblRandom&amp;quot;&lt;br /&gt;
    Runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File: Default.aspx&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;user&amp;quot; TagName=&amp;quot;PropertyRandomImage&amp;quot; Src=&amp;quot;~/Control.ascx&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot;&lt;br /&gt;
&amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        PropertyRandomImage1.ImageFolderPath = &amp;quot;~/Images2&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;head id=&amp;quot;Head1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Show Programmatic&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
    &amp;lt;user:PropertyRandomImage&lt;br /&gt;
        ID=&amp;quot;PropertyRandomImage1&amp;quot;&lt;br /&gt;
        Runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use properties defined in custom control==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;nfexASP&amp;quot; Namespace=&amp;quot;MyCustomControls&amp;quot; Assembly=&amp;quot;CustomControls&amp;quot;%&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
   sub Submit(Sender as Object, e as EventArgs)&lt;br /&gt;
      MyControl.Size = MyControl.Size + 1&lt;br /&gt;
   end sub&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&lt;br /&gt;
   &amp;lt;form runat=server&amp;gt;&lt;br /&gt;
      The custom control produces the following output:&lt;br /&gt;
   &lt;br /&gt;
      &amp;lt;nfexASP:CustomControl2 id=&amp;quot;MyControl&amp;quot; runat=server &lt;br /&gt;
         Message=&amp;quot;Hello world!&amp;quot;&lt;br /&gt;
         Size=1 /&amp;gt;&lt;br /&gt;
         &lt;br /&gt;
      &amp;lt;asp:Button runat=&amp;quot;server&amp;quot;&lt;br /&gt;
         Text=&amp;quot;Increase size!&amp;quot; &lt;br /&gt;
         OnClick=&amp;quot;Submit&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
////////&lt;br /&gt;
using System;&lt;br /&gt;
using System.Web;&lt;br /&gt;
using System.Web.UI;&lt;br /&gt;
namespace MyCustomControls {&lt;br /&gt;
   public class CustomControl2 : Control {&lt;br /&gt;
      public string Message {&lt;br /&gt;
         get {&lt;br /&gt;
            return ViewState[&amp;quot;Message&amp;quot;].ToString();&lt;br /&gt;
         }&lt;br /&gt;
         set {&lt;br /&gt;
            ViewState[&amp;quot;Message&amp;quot;] = value;&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      public int Size {&lt;br /&gt;
         get {&lt;br /&gt;
            return (int)ViewState[&amp;quot;Size&amp;quot;];&lt;br /&gt;
         }&lt;br /&gt;
         set {&lt;br /&gt;
            ViewState[&amp;quot;Size&amp;quot;] = value;&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
      protected override void Render(HtmlTextWriter Output) {&lt;br /&gt;
         Output.Write(&amp;quot;&amp;lt;font size=&amp;quot; + this.Size + &amp;quot;&amp;gt;&amp;quot; + this.Message + &amp;quot;&amp;lt;/font&amp;gt;&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
////////////////&lt;br /&gt;
Imports System&lt;br /&gt;
Imports System.Web&lt;br /&gt;
Imports System.Web.UI&lt;br /&gt;
Namespace MyCustomControls&lt;br /&gt;
   Public Class CustomControl2 : Inherits Control&lt;br /&gt;
      public property Message as string&lt;br /&gt;
         Get&lt;br /&gt;
            Message = ViewState(&amp;quot;Message&amp;quot;).ToString&lt;br /&gt;
         End Get&lt;br /&gt;
         Set&lt;br /&gt;
            ViewState(&amp;quot;Message&amp;quot;) = value&lt;br /&gt;
         End Set&lt;br /&gt;
      end property&lt;br /&gt;
      &lt;br /&gt;
      public property Size as integer&lt;br /&gt;
         Get&lt;br /&gt;
            Size = CType(ViewState(&amp;quot;Size&amp;quot;), Integer)&lt;br /&gt;
         End Get&lt;br /&gt;
         Set&lt;br /&gt;
            ViewState(&amp;quot;Size&amp;quot;) = value&lt;br /&gt;
         End Set&lt;br /&gt;
      end property&lt;br /&gt;
      Protected Overrides Sub Render(Output as HtmlTextWriter)&lt;br /&gt;
         Output.Write(&amp;quot;&amp;lt;font size=&amp;quot; &amp;amp; Me.Size &amp;amp; &amp;quot;&amp;gt;&amp;quot; &amp;amp; Me.Message &amp;amp; &amp;quot;&amp;lt;/font&amp;gt;&amp;quot;)&lt;br /&gt;
      End Sub&lt;br /&gt;
   End Class&lt;br /&gt;
End Namespace&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>