Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C#] UserControl

    Ciao a tutti!
    Ho appena creato uno user control, contenente una dataGridView e un pulsante, in modo da poterlo richiamare facilmente in altri progetti.

    La creazione del componente va a buon fine, infatti l'ho inserito all'interno di una WinForm, ma il problema che sorge é il seguente:non riesco a prelevare l'evento onClick del pulsante.

    Ovvero se cliccko sul pulsante viene automaticamete definito l'evento OnLoad di tutto lo userControl.... coma mai?

    Grazie


  2. #2
    Devi intercettare il click del pulsante all'interno della classe dello UserControl e lì sollevare un altro evento che verrà intercettato dall'applicazione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Scusami ma non ho capito molto bene...

  4. #4
    Il pulsante è un controllo contenuto nello UserControl, non (direttamente) nel form, per cui i suoi eventi possono essere catturati solo all'interno dello UserControl. Se vuoi inviare una notifica della pressione del pulsante al form devi definire all'interno dello UserControl un evento da sollevare all'intercettazione dell'evento click del pulsante.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Quindi, mi stai dicendo che é necessario inserire una riga di codice che mi associ l'evento onClick del pulsante all'interno del mio UserControl, con un metodo creato nella form che lo contiene?

    Ad esempio: nella win form avrò
    codice:
    MuUserControl.MyButton.Click += this.SimulateButtonClick;
    
    dove:
    public void SimulateButtonClick(object sender, EventArgs e){
       MessageBox.Show("Click");
    }
    E così?


  6. #6
    No, nel codice della classe dello UserControl avrai
    codice:
    public event EventHandler ButtonClick;
    //...
    this.nomepulsante.Click+=this.nomepulsante_Click;
    //...
    public void nomepulsante_Click(object sender, EventArgs e){
       ButtonClick(sender,e);
    }
    E nella WinForm:
    codice:
    MyUserControl.ButtonClick += this.SimulateButtonClick;
    //...
    public void SimulateButtonClick(object sender, EventArgs e){
       MessageBox.Show("Click");
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    ok. Capito

    Grazie


  8. #8
    Salve ragazzi,
    grazie al vostro post ho inserito anche io un EventHanderl all'interno del mio usercontroll che, come nel caso di AlbertoPicca, contine un bottone. Attraverso questa sintassi, riesco a recuperarne l'id:

    codice:
        public void SimulateButtonClick(object sender, EventArgs e)
        {
            Button b = sender as Button;
            Response.Write(b.ID.ToString());
        }
    In questo modo però tutti i controlli avranno un bottone avente lo stesso id. Come posso impostare dinamicamente, oltre all'id del controllo, anche l'id del mio bottone? Per l'Add dell'usercontrol io utilizzo una sintassi come questa:

    codice:
        WebUserControl DynamicUserControl = LoadControl("WebUserControl.ascx") as WebUserControl;
        DynamicUserControl.ID = "uc" + i;
        DynamicUserControl.ButtonClick += this.SimulateButtonClick;
        MioContenitore.Controls.Add(DynamicUserControl);
    Grazie in anticipo a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.