(#) custom control click event Unable to castr

venerdì 24 ottobre 2014 - 12.26

salva Profilo | Newbie

buon girno tento di boxare un custom control cosi come si fa per gli altri oggetti nativi ma va in errore
(Unable to cast object of type 'System.Windows.Forms.Button' to type 'prova_custom_control.controllo_nuovo'.)
non so il perche´

using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; namespace prova_custom_control { public partial class controllo_nuovo : UserControl { public controllo_nuovo() { InitializeComponent(); } private void controllo_nuovo_Load(object sender, EventArgs e) { } } }

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace prova_custom_control { public partial class Form1 : Form { controllo_nuovo controllo = new controllo_nuovo(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.Controls.Add(controllo); controllo.button1 .Click += new EventHandler(this.controllo_Click); } public void controllo_Click(System.Object sender, EventArgs e) { controllo_nuovo clickato = (controllo_nuovo)sender; this.BackColor = Color.Red; } } }

891x351 31Kb

artcava Profilo | Newbie

Ciao Salva, quello che stai cercando di 'castare' in un Button è uno UserControl che non deriva da WebControl, questo il motivo per cui non funziona.

Un Custom Control deve derivare da un altro controllo derivato da WebControl oppure direttamente da Control.
Nel dicembre del 2011 (preistoria...) scrivevo un articolo in merito a questo: http://artcava.blogspot.it/2011/12/quando-usare-user-control-e-quando.html

Spero di esserti stato utile...
Marco Cavallo
WebMaster & Software Architect

Il mio sito in continua evoluzione...
My site is constantly evolving...

Vieni a trovarmi!
Join ArtCava now!
http://www.artcava.net/

salva Profilo | Newbie

ciao e grazie per la risp.
frugando nel web ho trovato questo

bottone_prova bott_se = sender as bottone_prova; <---- scritto cosi va bene non va in errore

ma non e finita ....

nel custom control ho inerito una stringa pubblica , nel form i delegati come da manuale , se clicco sul corpo dell custom_control funziona ho il
ritorno della stringa(testo), ma se clicco sul bottone ho un errore la stringa (testo) e NUll ! mi sai dire come mai ?
public string testo { get { return button1.Text; } set { button1.Text = value; } }

private void Form1_Load(object sender, EventArgs e) { bott.Click +=new EventHandler(this.bott_Click); bott.button1 .Click +=new EventHandler(this.bott_Click); this.Controls.Add(bott); } public void bott_Click(object sender, EventArgs e) { bottone_prova bott_se = sender as bottone_prova; this.Text = bott_se.testo;

artcava Profilo | Newbie

Scusa, subito non avevo notato stessi parlando di Windows.Form...

Comunque, prova a differenziare i due EventHandler, scatenando due eventi differenti
Marco Cavallo
WebMaster & Software Architect

Il mio sito in continua evoluzione...
My site is constantly evolving...

Vieni a trovarmi!
Join ArtCava now!
http://www.artcava.net/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5