کد فوق به صورت خودکار برای custom control ایجاد می شود. event ها (رخدادها) و توابع را می توان به کلاس custom control اضافه کرد.
مثال: در این بخش همان custom control مثال قبلی (SeverControl1) را بسط می دهیم. متدی به نام checkpalindrome به آن اضافه می کنیم که قابلیت بررسی و پیدا کردن palindrome ها (واروخوانه( را به کنترل می دهد. Palindrome واژه، جمله، عدد یا هر چیز دیگری گفته میشود که خواندن آن از چپ به راست یا از راست به چپ کاملاً یکسان باشد. به عنوان نمونه می توان واژه های Malayalam،madam ، Sarasرا نام برد.
برای این منظور لازم است کد custom control را همانگونه که زیر مشاهده می کنید، بسط دهید: کد: using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace CustomControls { [DefaultProperty("Text")] [ToolboxData("< {0}:ServerControl1 runat=server >< /{0}:ServerControl1 >")] public class ServerControl1 : WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { get { String s = (String)ViewState["Text"]; return ((s == null) ? "[" + this.ID + "]" : s); } set { ViewState["Text"] = value; } } protected override void RenderContents(HtmlTextWriter output) { if (this.checkpanlindrome()) { output.Write("This is a palindrome: < br / >"); output.Write("< FONT size=5 color=Blue >"); output.Write("< B >"); output.Write(Text); output.Write("< /B >"); output.Write("< /FONT >"); } else { output.Write("This is not a palindrome: < br / >"); output.Write("< FONT size=5 color=red >"); output.Write("< B >"); output.Write(Text); output.Write("< /B >"); output.Write("< /FONT >"); } } protected bool checkpanlindrome() { if (this.Text != null) { String str = this.Text; String strtoupper = Text.ToUpper(); char[] rev = strtoupper.ToCharArray(); Array.Reverse(rev); String strrev = new String(rev); if (strtoupper == strrev) { return true; } else { return false; } } else { return false; } } } }
هنگامی که کد کنترل خود را اصلاح می کنید، باید solution را با کلیک روی Build --> Build Solution بسازید تا از این طریق تغییرات وارد آمده در پروژه نشان داده شوند. حال یک کنترل textbox و button control به صفحه اضافه کنید تا کاربر بتواند متن وارد کند. زمانی که کاربر روی دکمه کلیک می کند متن ورودی برای یافتن Palindrome کاملاً بررسی می شود. کد: < form id="form1" runat="server" > < div > Enter a word: < br / > < asp:TextBox ID="TextBox1" runat="server" style="width:198px" > < /asp:TextBox > < br / > < br / > < asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Check Palindrome" style="width:132px" / > < br / > < br / > < ccs:ServerControl1 ID="ServerControl11" runat="server" Text = "" / > < /div > < /form >
Click event handler کنترل دکمه، متن را از کنترل textbox کپی کرده و آن را در خاصیت (property) custom control می ریزد. کد: protected void Button1_Click(object sender, EventArgs e) { this.ServerControl11.Text = this.TextBox1.Text; }
پس از اجرا، کنترل مورد نظر palindrome ها را پیدا کرده و بررسی می کند. به نکات زیر توجه کنید: پس از اینکه ارجاع را به custom control اضافه می کنید، این custom control (کنترل سفارشی) بلافاصله به toolbox اضافه شده و شما می توانید آن را مانند هر کنترل دیگری به طور مستقیم مورد استفاده قرار بدید. در اینجا متد RenderContents کلاس custom control بازنویسی (override) شده و شما می توانید متدها و رخدادهای خود را به آن اضافه کنید. متد RenderContents یک پارامتر از نوع HtmlTextWriter می گیرد که وظیفه ی اجرا و نمایش / rendering (بر روی مرورگر ) را بر عهده دارد.