[ mcsd @ 18.09.2004. 11:54 ] @
Kako da napravim dogadjaj u VB.Net-u na nivou cele forme, tj. da odredjeni dogadjaj(npr. "Click") vazi za sve kontrola na formi, a da nije kao u sledecem primeru, tj da ne moram da nabrajam sve kontrola na formi.

>>>> Private Sub GlobalniDogadjaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Click, btnSnimi.Click, btnZatvori.Click, btnTest.Click, txtIme.Click, txtPrezime.Click <<<<


Unapred hvala. Bojan
[ Deep|Blue @ 23.09.2004. 21:38 ] @
Pazi, za pocetak ne mozes da napravis globalni event iz razloga sto sve kontrole nemaju isti poziv eventa _onclick.

ono sto mozes da probas jeste da napravis tipske onclick eventove za razlicite kontrole koji ce vrsiti iste akcije (ili pozivati istu proceduru)
zatim u form_load eventu "prosetas" formom i pokupis sve kontrole i svakoj prikacis tvoj onclick event.
ovisno o broju kontrola to moze da potraje par sec, ali uglavnom se dosta brzo izvrsava.
[ havramm @ 24.09.2004. 00:00 ] @
Nešto ovako (doduše u c#-u, ali nadam se da će pomoći...)?
Code:

public class MyBubbleForm: Form
{
    private Button button;
    private Label label;
    private TextBox textBox;

    public event EventHandler GlobalClick;

    public MyBubbleForm()
    {
        InitializeComponent();
        BindEventHandlers();
    }

    private void InitializeComponent()
    {
        ...
    }

    private void BindEventHandlers()
    {
        this.button.Click += new EventHandler(this.OnGlobalClick);
        this.label.Click += new EventHandler(this.OnGlobalClick);
        this.textBox.Click += new EventHandler(this.OnGlobalClick);
    }

    private void OnGlobalClick(object sender, EventArgs e)
    {
        if (this.GlobalClick != null)
        {
            this.GlobalClick(this, e);
        }
    }
}
[ dusans @ 24.09.2004. 09:13 ] @
Code:

Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Me.CascadeSetGlobalClick(Me)
End Sub

Private Sub CascadeSetGlobalClick(ByVal C As System.Windows.Forms.Control)
  Dim Ctrl As System.Windows.Forms.Control
  AddHandler C.Click, AddressOf Me.HandleClick
  For Each Ctrl In C.Controls
    CascadeSetGlobalClick(Ctrl)
  Next
End Sub

Private Sub HandleClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
  ' Some code...
End Sub


Pozdrav :)