2010-07-27 5 views
0

Je crée une classe de composant, elle étend une zone de liste déroulante et génère des nombres aléatoires. Mais quand je glisse et dépose mon composant de la boîte à outils à un formulaire, il génère automatiquement Me.Randtest1.Items.AddRange (...) dans le concepteur qui utilise des nombres statiques. L'idée était d'avoir des nombres différents à chaque fois et pas le même.Comment peut-il obtenir VB de ne pas générer automatiquement du code pour mon composant?

Imports System.Windows.Forms 

Public Class randtest 
    Inherits ComboBox 

    Public Sub New() 
    setDefaultText() 
    fillComboBox() 
    End Sub 

    Private Sub setDefaultText() 
    Text = Rnd(10) 
    End Sub 

    Private Sub fillComboBox() 

    For count = 0 To 5 
     Items.Add(Rnd(10)) 
    Next 

    End Sub 
End Class 

Merci

Répondre

1

Ajouter ce au sommet du constructeur:

If DesignMode Then Exit Sub 

De cette façon, il ne sera pas générer quoi que ce soit au moment de la conception, seulement au moment de l'exécution. Juste par curiosité, est-ce que l'utilisateur peut choisir un nombre aléatoire, ou simplement programmer?

+0

+1 Cela peut aussi être une bonne idée de "Randomiser" là quelque part. Peut-être dans le 'Sub New' ou même un constructeur statique' Shared Sub New' http://stackoverflow.com/questions/1380990/using-randomize-before-rnd-in-vb-net – MarkJ

+0

Randomize n'appartient pas vraiment à un contrôle. Il devrait aller dans le formulaire ou la fonction Main() à la place. –

+0

Cela ne fonctionne pas, DesignMode n'est pas encore défini sur true au moment du constructeur. Substituer CreateHandle() et ajouter des éléments si aucun n'est présent est une solution de contournement. –

Questions connexes