-3

这是一个伪问题。我可以强制链接在 EventHandler 中打开所需的页面,但我想知道在这种情况下我做错了什么,并以正确的方式做:

在 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;

EventHandler,LinkClicked,在public partial class Form1 : Form

private void LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    System.Diagnostics.Process.Start(e.Link.LinkData.ToString());
}

当您单击 linkLabel1 时,当您调用System.Diag....

我没有接受过太多关于错误处理或词汇的培训,所以这对我来说可能是希腊语。该按钮不是静态的...我应该创建一个...链接的新实例吗?

程序不是已经创建了一个实例吗?如果不是,为什么.Size, .Name, .Text, etc 工作......但不是.Links.Add?不知道我在说什么。

4

2 回答 2

4

问题大概出在e.Link.LinkData.ToString()

检查LinkData不为空...

于 2013-01-10T23:50:41.313 回答
1

我相信您的问题是您在自动生成的设计器文件中添加了链接。您无法预测 Visual Studio 何时会修改/重新创建它,以及它将有哪些变化。就我而言,您使用的相同语句被替换为:

this.linkLabel1.LinkArea = new System.Windows.Forms.LinkArea(1, 1);

解决方法很简单。地方:

this.linkLabel1.Links.Add(1, 1, "www.google.com");

如果Load是您的表格。还要确保从设计器区域中删除由 Visual Studio 重构的所有不需要的代码部分。

于 2013-01-10T23:55:29.270 回答