cassin.simone (Member)
Guru
Messaggi: 1051
Iscritto: 03/06/2009
|
Postato originariamente da brexino:
praticamente, come funziona con i bottoni standard di vb.net,
voglio creare un mio bottone, con tutti i suoi eventi, ovvero (quando il mouse passa sopra, quando il mouse clikka, quando cambia il testo eccc...) senza usare quello standard , ma voglio farlo io, e implementarlo in ogni progetto. capito? in pratica voglio sapere come si può creare un bottone, senza usare quello di default |
Lo ammetto: non lo so |
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Devi usare le proprietà:
Codice sorgente - presumibilmente VB.NET |
Public Property MiaProprieta() As String Get Return valore End Get Set(ByVal value As String) valore = value End Set End Property
|
Dove valore è una variabile che appartiene alla classe dove hai definito la proprietà.
In un altra classe puoi fare:
Codice sorgente - presumibilmente Plain Text |
Label1.Text = IstanzaMiaClasse.MiaProprieta
|
|
|
cassin.simone (Member)
Guru
Messaggi: 1051
Iscritto: 03/06/2009
|
Hehe...manuelino sà tutto
|
|
manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Postato originariamente da cassin.simone:
Hehe...manuelino sà tutto |
-.-' |
|
brexino (Normal User)
Newbie
Messaggi: 8
Iscritto: 25/01/2010
|
ho provato il codice postato da manvb.net, ma quando clicco sul controllo in modalita di debug, il controllo, si blocca automaticamente. posto il codice, cosi magari capite meglio
Codice sorgente - presumibilmente VB.NET |
Public Class switch Public Shared Variabile As String Public Property MiaProprieta() As String Get Return Variabile End Get Set(ByVal text As String) Variabile = text End Set End Property Private Sub switch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Button1.Image = My.Resources._ON End Sub Public Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown Dim var As Boolean = True If var = True Then Button1.Image = My.Resources.OFF Variabile = "off" var = False ElseIf var = False Then Button1.Image = My.Resources._ON Variabile = "on" var = True End If End Sub End Class
|
ma dove sbaglio?
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Inutile usare una texbox se non devi inserire dati. Piuttosto usa una label. Inutile anche inserire Variabile e var dato che indicano la stessa cosa.
L'idea della proprietà è quella più corretta:
Codice sorgente - presumibilmente VB.NET |
Public Class Switch 'Questa variabile deve essere privata perchè: ' - deve essere modificata solo dal codice di questa classe, altrimenti ' la si potrebbe impostare senza modificare il controllo; ' - deve essere controllata dalla proprietà IsOn; se fosse pubblica, la proprietà ' non avrebbe alcun senso. 'Inoltre NON può essere Shared, poiché sarebbe unica per tutti gli Switch, e impostandone 'uno su off, anche tutti gli altri accederebbero alla stessa variabile che contiene off. Private _IsOn As Boolean Public Property IsOn() As Boolean Get Return _IsOn End Get Set(ByVal value As Boolean) _IsOn = value ChangeImage() End Set End Property Private Sub switch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Button1.Image = My.Resources._ON End Sub Private Sub ChangeImage() If Me.IsOn Then Button1.Image = My.Resources._ON Else Button1.Image = My.Resources.OFF End If End Sub Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown Me.IsOn = Not Me.IsOn End Sub End Class
|
Inoltre non è necessario che le sub siano pubbliche. Anzi, in questo caso è formalmente scorretto, in quanto rappresentano gestori di eventi e, in quanto tali, costituiscono il codice che "fa funzionare" il controllo e che, quindi, deve rimanere nascosto all'esterno. L'unica cosa che il chiamante può usare è la proprietà IsOn.
|
|