2010-07-27 45 views
0

我構建了一個組件類,它擴展了組合框並生成一些隨機數。但是當我將組件從工具箱拖放到表單時,它會在使用靜態編號的Designer中自動生成Me.Randtest1.Items.AddRange(...)。這個想法是每次都有不同的數字,而且不一樣。它如何讓VB不會自動爲我的組件生成代碼

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 

感謝

回答

1

一下添加到構造函數的頂部:

If DesignMode Then Exit Sub 

這樣一來,就不會產生在設計時無能爲力,只能在運行時。

只是出於好奇,這是爲了讓用戶可以選擇一個隨機數,或只是編程?

+0

+1它也可能是一個好主意,在那裏隨機化。也許在'Sub New'或者甚至是一個靜態構造函數'Shared Sub New' http://stackoverflow.com/questions/1380990/using-randomize-before-rnd-in-vb-net – MarkJ 2010-07-28 17:45:22

+0

Randomize並不屬於一個控件。它應該以形式或Main()函數代替。 – 2010-07-29 05:48:30

+0

這不起作用,DesignMode在構造函數時尚未設置爲true。重寫CreateHandle()並添加項目(如果不存在)是一種解決方法。 – 2012-05-01 13:08:25