PDA

View Full Version : عدم توانایی در فرمان دهی به کامپوننت (کنترلی که خودم ساخته ام ).......



آرام جان گل
سه شنبه 20 اردیبهشت 1390, 09:54 صبح
سلام

من یک کنترل خودم ساخته ام از نوع ImageButton با کد های زیر

نمونه کد کامپوننت:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace SBN_WebComponents.SBN_Button
{
public class Btn_DownUp_Search : CompositeControl
{
#region Properties
ImageButton Img_Btn_DownUp_Search;
public delegate void Btn_DownUp_Search_ClickedHandler();
[Category("SBN_Action")]
[Description("Fires When The Btn_DownUp_Search ImageButton Is Clicked.")]
public event Btn_DownUp_Search_ClickedHandler Btn_DownUp_Search_Clicked;
private string _ImageUrl;
public string ImageUrl
{
get
{
return Img_Btn_DownUp_Search.ImageUrl;
}
set
{
_ImageUrl = value;
}
}

#endregion
#region Functions
protected virtual void OnBtn_DownUp_Search_Clicked()
{
if (Btn_DownUp_Search_Clicked != null)
{
Btn_DownUp_Search_Clicked(); // Notify Subscribers
switch (Img_Btn_DownUp_Search.ImageUrl)
{
case "../Global/Image/ComponentImg/down1.png":
Img_Btn_DownUp_Search.ImageUrl = "../Global/Image/ComponentImg/up1.png";
break;
case "../Global/Image/ComponentImg/up1.png":
this.Img_Btn_DownUp_Search.ImageUrl = "../Global/Image/ComponentImg/down1.png";
break;
}
}
}
#endregion
protected override void CreateChildControls()
{
Img_Btn_DownUp_Search = new ImageButton();
Img_Btn_DownUp_Search.ID = "Img_Btn_DownUp";
Img_Btn_DownUp_Search.ToolTip = "";
Img_Btn_DownUp_Search.ImageUrl = "../Global/Image/ComponentImg/down1.png";
Img_Btn_DownUp_Search.Click +=
new System.Web.UI.ImageClickEventHandler(Img_Btn_DownU p_Search_Click);
this.Controls.Add(Img_Btn_DownUp_Search);

base.CreateChildControls();
}
void Img_Btn_DownUp_Search_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
OnBtn_DownUp_Search_Clicked();
//throw new NotImplementedException();
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
base.Render(writer);
}
}
}


من توی صفحه ام از این کنترل 3 یا 4 تا دارم و می خوام با کلیک روی همه اونها فقط یک تابع اجرا بشه که در این تابع کنترلم را شناسایی می کنم و بر اساس اینکه کدام کنترل من است فرمان مناسب را بهش می دم .
این کار را برای این کردم که یک تابع بنویسم و برای چند کنترل استفاده کنم

حالا مشکل من چیه ؟ مشکل اینه که نمی تونم Sender را درست تعریف کنم تا بر اساس sender تشخیص بدم کدام کنترل است

من تابع داخل صفحه را که پشت کلیک این کنترل می نویسم را هم می نویسم

تابع در صفحه



protected void PanelsControl_()
{
SetAry();
ImageButton img = new ImageButton();
Panel pnl = new Panel();
img = sender as ImageButton;
if (img.ImageUrl == "~/Global/Image/ComponentImg/btn_Down.gif")
{
for (int i = 0; i < 5; i++)
if (PnlAry[i].SkinID == img.ValidationGroup)
{
PnlAry[i].Visible = true;
//img.Focus();
//(sender as ImageButton).Focus();
foreach (Control ctl in PnlAry[i].Controls)
{
if (ctl is HtmlTable)
{
foreach (Control ctl01 in ctl.Controls)
{
if (ctl01 is HtmlTableRow)
{
foreach (Control ctl02 in ctl01.Controls)
{
if (ctl02 is HtmlTableCell)
{
foreach (Control ctl03 in ctl02.Controls)
{
if ((ctl03 is CheckBox) && ((ctl03 as CheckBox).ToolTip == "1"))
{
(ctl03 as CheckBox).Focus();
}
}
}
}
}
}
}
}
img.ImageUrl = "~/Global/Image/ComponentImg/btn_UP.gif";
}
}
else if (img.ImageUrl == "~/Global/Image/ComponentImg/btn_UP.gif")
for (int i = 0; i < 5; i++)
if (PnlAry[i].SkinID == img.ValidationGroup)
{
PnlAry[i].Visible = false;
(sender as ImageButton).Focus();
img.ImageUrl = "~/Global/Image/ComponentImg/btn_Down.gif";
}
}


تابع من حق داره که sender را نشناسه چون براش تعریف نشده.ولی با این حال نمی دونم چطوری این را برای رویداد کلیک کنترل تعریف کنم.
چطوری بنویسم که مشکلم حل بشه
ممنون راهنمایی کنید

ممنون راهنمایی کنید.