-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などは機能するの.Links.Addですか? 私が何について話しているのか分かりません。

4

2 に答える 2

4

問題はおそらくe.Link.LinkData.ToString()

LinkDatanull でないことを確認してください...

于 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 に答える