2012-09-09 81 views
0

我需要更改按鈕單擊上的標籤文本,但它不起作用,並給我運行時錯誤。我爲LABEL單獨分類並單獨爲BUTTON.This爲虛擬代碼。真實的代碼包含標籤和按鈕的位置和大小。一切都是動態創建的。謝謝!用按鈕單擊更改標籤文本

/-------------------------------------LABEL class-------------------------------/ 
    private Label label1; 

    public Label getLabel1() 
    { 
     return label1; 
    } 

    public LABEL() 
    { 
     label1 = new Label(); 
    } 

    public void print() 
    {    
     label1.Text = "x"; 
     Controls.Add(label1); 
    }// 

    /-------------------------------------BUTTON class----------------------------------/ 
    private Button button1; 

    public BUTTON() 
    { 

    } 

    public void print() 
    { 
     button1 = new Button(); 
     button1.Click +=new EventHandler(button1_Click); 
     Controls.Add(button1); 
    } 

    public void button1_Click(object sender, EventArgs e) 
    { 
     LABEL label = new LABEL(); 
     label.getLabel1().Text = "y"; 
    } 
+0

你沒有提到這是給在運行時 – codingbiz

+0

由於MatthewRz錯誤是固定的錯誤,但它仍然不會顯示任何內容 –

回答

0

您正試圖改變一個空引用標籤的文本:

// Label Class 
private Label label1; 
public Label getLabel1() 
{ 
    return label1; 
} 
// Button Class 
LABEL label1 = new LABEL(); 
label1.getLabel1().Text = "y"; 
// getLabel1 is returning null, because you have not initialized label1 

爲了使代碼工作,你必須改變如下:

public LABEL() 
{ 
    label1 = new Label(); 
} 

public void print() 
{ 
    label1.Text = "x"; 
    Controls.Add(label1); 
} 

希望這可以幫助!

+0

這有一定道理,但它仍然沒有做任何事情。它停下來雖然崩潰。謝謝! –

+0

你是什麼意思,它什麼都不做?你的意思是說它不會改變'label1'的文字? – 3aw5TZetdf

+0

是的,它不會改變文本,因爲它應該是 –

1

你可以簡單地嘗試它。

private void button1_Click(object sender, EventArgs e){label1.Text = "Hi";label1.Refresh();}