2011-05-25 2 views
3

Je crée un contrôle de bouton personnalisé et rencontre des difficultés avec ma propriété Texte. Tout ce que je tape ne reste que lorsque la fenêtre du concepteur de formulaires est ouverte. Lorsque je ferme le concepteur de formulaire et le rouvre, ma propriété Text est réinitialisée sur "". Aussi, si je cours le programme, il perd la valeur entrée au moment du design.La propriété de texte dans le contrôle personnalisé perd de la valeur

J'ai également une propriété Image pour mon contrôle qui fonctionne très bien.

est ici une partie de mon code:

Imports System.Drawing 
Imports System.Drawing.Imaging 
Imports System.Windows.Forms 
Imports System.ComponentModel 

Public Class BlackButton 

Private iText As String 
Private iImage As Image 

''' <summary> 
''' Gets/Sets the text displayed in the button. 
''' </summary> 
<Browsable(True), Description("Gets or sets the text displayed on the button")> _ 
Public Shadows Property Text() As String 
    Get 
     Return iText 
    End Get 
    Set(ByVal value As String) 
     iText = value 
     ReDrawMe() 
    End Set 
End Property 

''' <summary> 
''' Gets/Sets the image to be displayed on the button 
''' </summary> 
<Browsable(True), Description("Gets or sets the image displayed on the button")> _ 
Public Shadows Property Image() As Image 
    Get 
     Return iImage 
    End Get 
    Set(ByVal value As Image) 
     iImage = value 
     ReDrawMe() 
    End Set 
End Property 

J'ai soigneusement passé au peigne fin mon code et fait que je ne suis pas remise à zéro partout.

Merci d'avance pour toute aide à ce sujet.

+0

Pourquoi les données restent en place après le formulaire ferme ? – soandos

+0

C'est un contrôle de bouton. Lorsque vous entrez une légende pour le bouton au moment du design, il doit toujours être présent lorsque vous exécutez le programme ou fermez puis rouvrez le concepteur de formulaire. Mon contrôle ne le fait pas. –

Répondre

1

Il semble fonctionner d'ajouter une propriété:

<Browsable(True), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _ 
Public Overrides Property Text() As String 
    Get 
     Return MyBase.Text 
    End Get 
    Set(ByVal value As String) 
     MyBase.Text = value 
     LabInfo.Text = MyBase.Text 
    End Set 
End Property 
+0

Oui, c'est ce qui a finalement fonctionné pour moi; La pièce DesignerSerializationVisibility (DesignerSerializationVisibility.Visible) me manquait. –

1

Une fois, j'ai rencontré ce problème. Il suffit de supprimer le mot-clé Shadows. Je ne sais pas si Override peut fonctionner ici, mais si ce n'est pas le cas, ignorez simplement l'avertissement VS sur les propriétés Text et Image.

EDIT: Je ne sais pas pourquoi vous n'avez pas réussi avec le mot-clé Overrides. Seule la propriété Image m'a forcé à utiliser Overloads à la place. Voici mon code:

Imports System.ComponentModel 

Classe publique UserControl1

Dim _Text As String 
Dim _Image As Image 

<Browsable(True), Description("Gets or sets the text displayed on the button")> _ 
Overrides Property Text() As String 
    Get 
     Return _Text 
    End Get 
    Set(ByVal value As String) 
     _Text = value 
     'This line just for update 
     'the UI when I design to check 
     'if the values are saved. 
     MyBase.Text = value 
    End Set 
End Property 

<Browsable(True), Description("Gets or sets the image displayed on the button")> _ 
Overloads Property Image() As Image 
    Get 
     Return _Image 
    End Get 
    Set(ByVal value As Image) 
     _Image = value 
     'ReDrawMe() 
    End Set 
End Property 

End Class

+0

OK, j'ai essayé de supprimer le mot-clé Shadows comme ceci: 'Public Property Text() As String' Pas de chance là-bas. Ensuite, j'ai essayé avec le mot clé Overrides. Toujours pas de chance. –

+0

Veuillez patienter. J'ai rencontré celui-là et l'ai résolu. Je vais vérifier mon ancien projet et éditer ma réponse bientôt (et laisser un commentaire après cela). EDIT1: Et, s'il vous plaît dites-moi la version .NET que vous utilisez. J'ai entendu des membres de mon forum avoir de la malchance avec ça aussi. EDIT2: Et, de quoi héritez-vous cette classe? Contrôle ou bouton? –

+0

Réponse modifiée. J'espère que ça ira pour vous! –

Questions connexes