這是一個僞問題。我可以強制鏈接在事件處理程序來打開所需的頁面,但我想知道我在這種情況下做錯了,做正確的方式:NullReferenceException與LinkLabel
在的InitializeComponent(),在partial class Form1
:
public void InitializeComponent()
{
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
//...
//
// linkLabel1
//
this.linkLabel1.AutoSize = true;
this.linkLabel1.LinkArea = new System.Windows.Forms.LinkArea(0, 1);
this.linkLabel1.LinkColor = System.Drawing.Color.Red;
this.linkLabel1.Location = new System.Drawing.Point(259, 100);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(13, 17);
this.linkLabel1.TabIndex = 5;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = "?";
/**/
this.linkLabel1.Links.Add(1, 1, "www.google.com"); //This is the only code I have added manually.
/**/
this.linkLabel1.UseCompatibleTextRendering = true;
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkClicked);
}
//...
private System.Windows.Forms.LinkLabel linkLabel1;
的事件處理程序,LinkClicked,在public partial class Form1 : Form
:
private void LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(e.Link.LinkData.ToString());
}
當您單擊linkLabel1,你得到經典「的NullReferenceException:未將對象引用設置到對象的實例」當你調用System.Diag...
。
我還沒有太多的錯誤處理或vocab的培訓,所以這可能是希臘人對我來說。該按鈕不是靜態的...我應該創建一個...鏈接的新實例?
程序是否已創建實例?如果沒有,爲什麼.Size
,.Name
, .Text
等工作...但不是.Links.Add
?不知道我在說什麼。
-1 Visual Studio真棒(我應該知道,我現在再次使用Eclipse),其中一個原因是它非常棒,因爲** VS有一個很好的調試器;用它**。也就是說,在拋出Exception時停止,然後*檢查*數據/變量。我給了downvote,因爲學習可用的工具將節省您(和我們)的時間,並且會降低極端本地化問題的數量增長的速度..也許不會那麼明顯如此:( – 2013-01-10 23:52:17