2014-11-02 56 views
0

我製作遊戲2048,但作爲額外的我想讓用戶讓他們改變廣場的高度,如果他們想。如果用戶點擊'btnSquare'按鈕,輸入框將顯示他們可以在哪裏填充正方形的高度。他們的輸入將顯示在'txtSquare'文本框中,該文本框已經被4填充。正方形的高度將變爲該文本框中的文本。現在,當我嘗試運行這個時,我得到一個System.Nullreference.Exception,但我不知道爲什麼自文本框最初填充了4.調試器說:對象引用未設置爲對象的實例。Systerm.Nullreference.Exeption VB.NET

而且我是Visual Basic的新手,所以我知道我的這種方法可能無法正常工作。如果有人能夠幫助我,告訴我用什麼方法來實現遊戲板的高度更換器,我會非常感激。 PS:我是荷蘭人,所以我對代碼中的不同語言感到抱歉。

Public Class Form1 


Public square As Integer = (Convert.ToInt32(txtSquare.Text) - 1) 

Dim rooster(square, square) As Label 
Dim oldrooster(square, square) As Label 

Public clickEnabled As Boolean = False 

Public Sub btnOrde_Click(sender As Object, e As EventArgs) Handles btnSquare.Click 
    Dim message, title As String 
    Dim defaultValue As Integer 
    Dim userInput As Object 
    ' Set prompt. 
    message = "Geef de hoogte van je spelbord in. (vb. 4 voor een 4x4 vierkant)" 
    ' Set title. 
    title = "Initialisatie spelbord" 
    defaultValue = 4 ' Set default value. 

    ' Display message, title, and default value. 
    userInput = InputBox(message, title, defaultValue) 
    ' If user has clicked Cancel, set myValue to defaultValue 
    If userInput = "" Then userInput = defaultValue 
    If Not userInput > 1 Then userInput = defaultValue 
    square = (Convert.ToInt32(userInput) - 1) 
    txtSquare.Text = Convert.ToInt32(userInput) 

End Sub 
+0

可能重複[什麼是NullReferenceException,我該如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-它),如果你告訴我們它會發生什麼,這將有所幫助; [問] – Plutonix 2014-11-02 01:08:54

+1

看[這個答案](http://stackoverflow.com/a/26164755/1070452); 'Public Square As Integer =(Convert.ToInt32(txtSquare.Text) - 1)'您在創建控件之前創建了一個控件 – Plutonix 2014-11-02 01:12:45

+0

Hi Plutonix,感謝您的回答,我初始化了txtSquare.Text =「4」 =(Convert.ToInt32(txtSquare.Text) - 1)在Form1_load中。現在我沒有錯誤,但它只創建了1個tile而不是16個。如果我調試它,它說的square = 3的值,所以我不知道它爲什麼只創建1個tile,你可能知道爲什麼?謝謝!! – Ayk96 2014-11-02 02:00:44

回答

1

,你只能得到一個瓷磚的原因是陣列前廣場時仍然是0 實例化,你必須ReDimroosteroldroostersquare的值更改。

例子:

ReDim rooster(square, square) 
ReDim oldrooster(square, square) 

注:ReDim Preserve不會工作你的情況,因爲它僅允許,如果你只改變了最後一維的大小和你逐漸改變。因此,數組中的所有元素都將丟失,您必須重新創建它們。