Cambo tipo textbox

lunedì 04 febbraio 2013 - 17.20
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows XP  |  Visual Studio 2008  |  MySQL 5.1

Zixower Profilo | Newbie

Ho creato una classe ereditata da System.Windows.Forms.TextBox:

Public Class TextBox_Modificata Inherits System.Windows.Forms.TextBox [... proprietà, variabili e procedure varie] End Class

Ciò che sto cercando di fare è applicare questa classe ad una TextBox già esistente nella maschera, senza dover eliminare la TextBox già esistente e crearne una nuova con la classe TextBox_Modificata e ricopiarle dentro tutti i parametri della TextBox eliminata.

Ho già visto che il compilatore non mi fa storie nel ridichiarare la textbox:

' Casella è la TextBox creata nella maschera Casella = New TextBox_Modificata

A questo punto l'oggetto Casella continua a comportarsi come una TextBox e non come una TextBox_Modificata. Ho provato a richiamare i vari metodi come Update e Refresh, ma senza risultato. Mi ricordavo (forse a torto) che esisteva una volta il metodo Redraw, che potrebbe fare al caso mio, ma non mi viene proposto.

Chiedo se qualcuno di voi ha qualche idea in merito.

Grazie.

-------------------------------
AGGIORNAMENTO DEL 05-02-2013

Ho risolto in questo modo:

Private Sub Sostituzione Me.Controls.Remove(Casella) Nuova_TextBox(Casella) Me.Controls.Add(Casella) End Sub Private Sub Nuova_TextBox(ByRef Oggetto As TextBox) Dim Provvisoria As New TextBox_Modificata Provvisoria.AcceptsReturn = Oggetto.AcceptsReturn Provvisoria.AcceptsTab = Oggetto.AcceptsTab Provvisoria.AccessibleDefaultActionDescription = Oggetto.AccessibleDefaultActionDescription [... continuo proprietà...] Provvisoria.Visible = Oggetto.Visible Provvisoria.Width = Oggetto.Width Provvisoria.WordWrap= Oggetto.WordWrap Oggetto = New TextBox_Modificata Oggetto.AcceptsReturn = Provvisoria.AcceptsReturn Oggetto.AcceptsTab = Provvisoria.AcceptsTab Oggetto.AccessibleDefaultActionDescription = Provvisoria.AccessibleDefaultActionDescription [... continuo proprietà...] Oggetto.Visible = Provvisoria.Visible Oggetto.Width = Provvisoria.Width Oggetto.WordWrap= Provvisoria.WordWrap End Sub

Funziona, ma non è assolutamente ottimale. A questo punto chiedo se c'è un modo di inserire un ciclo all'interno della procedura Nuova_TextBox che mi permette di copiare le proprietà senza doverle scrivere a mano una ad una.

Vinsent Profilo | Senior Member

>Funziona, ma non è assolutamente ottimale. A questo punto chiedo
>se c'è un modo di inserire un ciclo all'interno della procedura
>Nuova_TextBox che mi permette di copiare le proprietà senza doverle
>scrivere a mano una ad una.

Dovresti usare le Reflection ma stò trovando difficile l' argomento, tra l' altro programmo per hobby nel tempo libero...quindi l' esempio sotto non funziona "perfettamente" e non è detto che sia corretto come metodo da usare.
Se vuoi approfondire: http://www.pierotofy.it/pages/guide/Guida_al_Visual_Basic_dotNET/La_Reflection_Parte_I/
Altrimenti puoi impostare le proprietà direttamente nella classe (vedi Sub New).
Da qualche parte avevo letto qualcosa anche sulla "serializzazione" ma non ricordo....

Imports System.Reflection Public Class Form1 Private Sub sostituisci_SubNew() Dim nuova_tbox As New TextBox_Modificata nuova_tbox.Location = TextBox1.Location Me.Controls.Remove(TextBox1) Me.Controls.Add(nuova_tbox) End Sub Private Sub sostituisci_Reflection() Dim nuova_tbox1 As New TextBox_Modificata nuova_tbox1.BackColor = Color.Chocolate 'ecc... Dim nuova_tbox2 As New TextBox_Modificata Dim Ty As Type = nuova_tbox1.GetType For Each Pinfo As PropertyInfo In Ty.GetProperties Console.WriteLine("Proprietà >" & Pinfo.Name) Try Pinfo.SetValue(nuova_tbox2, Pinfo.GetValue(nuova_tbox1, Nothing), Nothing) Console.WriteLine("Valore >" & Pinfo.GetValue(nuova_tbox1, Nothing).ToString) Catch ex As Exception Console.WriteLine(">>>>>> ERRORE <<<<<< " & ex.Message) End Try Console.WriteLine("--------------------------------") Next nuova_tbox2.Location = TextBox1.Location Me.Controls.Remove(TextBox1) Me.Controls.Add(nuova_tbox2) End Sub End Class Public Class TextBox_Modificata Inherits TextBox Sub New() Me.BackColor = Color.Yellow 'ecc... End Sub End Class
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5