Stworzyłem komponent który składa się z buttona i trzech textbox-ów. I teraz jak z niego korzystam chciałbym dodać do niego zdarzenie Click, które będzie się odnosiło tylko do buttona. Jak to zrobić?
Nie wiem czy dobrze Cię zrozumiałem ale wydaje mi się, że chodzi Ci o prostą delegację:
public class Component
{
public delegate void OnClickEventHandler(object sender, EventArgs e);
public event OnClickEventHandler OnClick;
protected void MyButton_Click(object sender, EventArgs e)
{
if (OnClick != null)
OnClick(sender, e);
}
}
i reszta standardowo:
component.OnClick += new Component.OnClickEventHandler(component_OnClick);
...jeżeli nie o to chodziło to sorki :P
No wydaje mi się że o to chodziło tylko jak to zrobić żeby przypisać zdarzenie właśnie do button1 który jest częścią mojego komponentu?
Bo to zdarzenie wywołuje zdarzenie dla całego komponentu.
Chyba jednak Cię nie zrozumiałem :P
Myślałem, że chodzi Ci o sytuację, w której masz komponent zawierający kilka kontrolek (w tym button1) i chciałbyś obsłużyć zdarzenie tego button1 ale nie wewnątrz komponentu tylko na zewnątrz? Tak Cię zrozumiałem i dlatego przedstawiłem to w taki sposób... no a teraz wydaje mi się, że chcesz po prostu obsłużyć zdarzenie OnClick wewnątrz komponentu??
jeżeli tak to napisz po prostu:
button1.OnClick += new button1.OnClickEventHandler(component_OnClick);
protected void button1_OnClick(object sender, EventArgs e)
{
//ciało metody
}
Pozdrawiam :)
Mi się wydaje że to teraz mnie nie zrozumiałeś :D
Mam Stworzony nowy komponent:
public partial class NewControl : UserControl
{
public NewControl()
{
InitializeComponent();
}
// tu są jakieś zmienne i Properties
}
Komponent ten składa się z kolejno ułożonych button1, textbox1, textbox2, label1
Teraz w klasie Form1 tworzę sobie ten komponent
NewControl nowy = new NewControl();
I poleceniem nowy.Click +=.... chciałbym dodać zdarzenie które będzie się wywoływało po naciśnięciu buttona.
Wydaje mi się że chodzi o Twojego pierwszego posta. Ale sprawdzałem i coś to nie działa:/
public partial class NewControl : UserControl
{
private Button btn;
public NewControl()
{
InitializeComponent();
btn.Click += (sender, e) => { if (BtnClick != null) BtnClick(this, e); };
}
public event EventHandler BtnClick;
}
Chyba nareszcie się jasno wyraziłem ;P
Wszystko bangla.
Thx
Witam,
A mam pytanko czy pojawił Ci się event ten nowo dodany w zakładce eventstów?