PDA

View Full Version : سوال: ساخت کلاس دلخواه



mehran_337
چهارشنبه 17 مهر 1392, 15:16 عصر
سلام به همه دوستان .
فرض کنید یک کلاس می خواهیم داشته باشیم که همیشه یک textbox و یک button کنار هم قرار می گیرند

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;
namespace Class1
{
[
ToolboxData("<{0}:Class1 runat=\"server\"> </{0}:Class1>")
]
public class Class1 : TextBox
{
public Class1()
{
}
protected override void Render(HtmlTextWriter writer)
{
Button btn = new Button();
btn.Text = "Click me ... ";
btn.RenderControl(writer);
btn.Click += new EventHandler(btn_Click);
base.Render(writer);
}
protected void btn_Click(object sender, EventArgs e)
{
this.Text = DateTime.Now.ToLongTimeString();
}
}
}


در این مثال یک کلاس اصلی از نوع تکست باکس ساختیم بعد یک کنترل دکمه به این تکست باکس تجمیع می شه .
حالا باید کاری کنم که وقتی روی دکمه کلیک شد مثلا رویداد btn_Click اجرا بشه اما نمیشه.
اگه دوستان راهنمایی کنند ممنون می شم

mehran_337
پنج شنبه 18 مهر 1392, 16:55 عصر
دوستان راهنمایی کنند . خیلی بهش احتیاج دارم

mehran_337
شنبه 20 مهر 1392, 13:21 عصر
دوستان کسی نمی تونه مشکلمو حل کنه ؟

mehran_337
یک شنبه 21 مهر 1392, 10:25 صبح
حد اقل مدیران محترم یه راهنمایی بکنند

fakhravari
دوشنبه 22 مهر 1392, 18:10 عصر
http://msdn.microsoft.com/en-us/library/ms366537(v=vs.100).aspx

mehran_337
سه شنبه 23 مهر 1392, 08:29 صبح
ممنون آقای فخرآوری !
بزارید بحث و اینگونه تشریح کنم :
اگر قرار است کلاسی از نوع textbox داشته باشیم آیا می شود به این کلاس button هم اضافه نمود ؟
اکر از متد render استفاده کنیم می شود و باتوجه به مثالی که در بالا ذکر کردم شدنی است اما مشکل اینجاست که رویداد کلیک را چگونه به این دکمه اضافه کنیم ؟
از آنجایی که Render خروجی html می دهد button تبدیل به تگ <input> می شود و از سرور ساید به کلاینت ساید تبدیل می شود .
دوستان در سایت stackoverflow استفاده از CreateChildControls() را پیشنهاد کردند که متاسفانه هر کاری کردم کنترل دکمه مشاهده نمی شود

private Button btn;

protected override void CreateChildControls()
{
base.CreateChildControls();

btn = new Button();
btn.ID = "btnClickMe";
btn.Text = "Click me ... ";
btn.Click += new EventHandler(btn_Click);
Controls.Add(btn);
}

private void btn_Click(object sender, EventArgs e)
{
this.Text = DateTime.Now.ToLongTimeString();
}


مشکل اینجاست چگونه می شود در کنترل دوم یک رویدادی را کدنویسی کرد (btn_click)