none
如何編寫事件程序 RRS feed

  • 問題

  • 1.我編寫下例程式碼建立LinkLabel物件。

     LinkLabel linkLabel1 = new System.Windows.Forms.LinkLabel();

    2.請問幫linkLabel1 物件建立如下例事件程序的程式碼該怎麼寫,謝謝。

            private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
            {

            }

    C#新手上路,敬請指導,謝謝。

    就以VB而言,可以下例方式建立程序,C#該怎麼寫呢?

      Dim WithEvents LinkLabel1 As New Windows.Forms.LinkLabel

    • 已編輯 170 2012年12月22日 上午 03:12
    2012年12月22日 上午 03:01

解答

  • 事件 (C# 程式設計手冊)

    HOW TO:訂閱及取消訂閱事件 (C# 程式設計手冊)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年12月22日 上午 03:17
    版主
  • 如果您從UI中設定事件的話,從Form1.Designer.cs中就可以看到如何設定事件了哦!
    linkLabel1.LinkClicked  += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(linkLabel1_LinkClicked);

    private void button1_Click(object sender, EventArgs e)
    {
    	LinkLabel linkLabel1 = new System.Windows.Forms.LinkLabel();
    	linkLabel1.Text = "Hello!";
    	this.Controls.Add(linkLabel1);
    	//linkLabel1.LinkClicked  += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(linkLabel1_LinkClicked);
    	linkLabel1.LinkClicked += linkLabel1_LinkClicked;
    }
    
    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
    	MessageBox.Show("linkClicked");
    }


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 170 2012年12月22日 上午 06:50
    2012年12月22日 上午 03:57
  • linkLabel1.LinkClicked += linkLabel1_LinkClicked; 這一行要寫在某個 Method 之內.

    以你的例子來說, 你可以寫在該 form 的建構函式中 (因為你已經先宣告了該控制項並產生執行個體了)

    public Form1()
            {
                InitializeComponent();

                 linkLabel1.LinkClicked += linkLabel1_LinkClicked;  

            }

    看來你對 C# 基礎不是太熟, 還是先把基礎文件看一看再繼續吧.

    對初心者有助益的 MSDN 文件庫索引整理 (二)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 170 2012年12月22日 上午 06:49
    2012年12月22日 上午 06:15
    版主

所有回覆

  • 事件 (C# 程式設計手冊)

    HOW TO:訂閱及取消訂閱事件 (C# 程式設計手冊)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2012年12月22日 上午 03:17
    版主
  • 如果您從UI中設定事件的話,從Form1.Designer.cs中就可以看到如何設定事件了哦!
    linkLabel1.LinkClicked  += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(linkLabel1_LinkClicked);

    private void button1_Click(object sender, EventArgs e)
    {
    	LinkLabel linkLabel1 = new System.Windows.Forms.LinkLabel();
    	linkLabel1.Text = "Hello!";
    	this.Controls.Add(linkLabel1);
    	//linkLabel1.LinkClicked  += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(linkLabel1_LinkClicked);
    	linkLabel1.LinkClicked += linkLabel1_LinkClicked;
    }
    
    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
    	MessageBox.Show("linkClicked");
    }


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 170 2012年12月22日 上午 06:50
    2012年12月22日 上午 03:57
  • 樓上的, 你不過就是把 HOW TO:訂閱及取消訂閱事件 (C# 程式設計手冊)

    這裡有講的東西再說一遍, 那意義是什麼 ?

    還有一點:給 Sample Code 請不要給個會混淆視聽的寫法, 你把事件註冊放在 Button Click, 是不是每點一次 Button 就重覆註冊一次 ?

    以就是那篇文的內容:

    若要使用 Visual Studio IDE 訂閱事件

    1. 如果看不到 [屬性] 視窗,請在 [設計] 檢視中以滑鼠右鍵按一下要建立事件處理常式的表單或控制項,然後選取 [屬性]。

    2. 在 [屬性] 視窗的頂端,按一下 [事件] 圖示。

    3. 按兩下要建立的事件,例如 Load 事件。

      Visual C# 會建立空白的事件處理常式方法,並將其加入程式碼中。 您也可以在 [程式碼] 檢視中手動加入程式碼。 例如,下列程式碼行會宣告一個事件處理常式方法,該方法將會在 Form 類別引發 Load 事件時呼叫。

      C#
      private void Form1_Load(object sender, System.EventArgs e)
      {
          // Add your form load event handling code here.
      }
      

      訂閱此事件所需的程式碼行也會在專案內的 Form1.Designer.cs 檔案中,於 InitializeComponent 方法內自動產生。 看起來像這樣:

        this.Load += new System.EventHandler(this.Form1_Load);



    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2012年12月22日 上午 04:33
    版主
  • 您好 版主大人,

    小弟之後會注意的,謝謝您的補充及說明。


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年12月22日 上午 04:50
  • 1.感謝以上大大們的幫忙。謝謝

    2.我依照大大的指導,編寫下例程式,但引發錯誤。

    敬請再指導,謝謝.是否可以提共語法讓我參考

    2012年12月22日 上午 06:08
  • linkLabel1.LinkClicked += linkLabel1_LinkClicked; 這一行要寫在某個 Method 之內.

    以你的例子來說, 你可以寫在該 form 的建構函式中 (因為你已經先宣告了該控制項並產生執行個體了)

    public Form1()
            {
                InitializeComponent();

                 linkLabel1.LinkClicked += linkLabel1_LinkClicked;  

            }

    看來你對 C# 基礎不是太熟, 還是先把基礎文件看一看再繼續吧.

    對初心者有助益的 MSDN 文件庫索引整理 (二)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 170 2012年12月22日 上午 06:49
    2012年12月22日 上午 06:15
    版主
  • 1.感謝版主的指導,謝謝。

    2.是否可以順便問一下,在public Form1()  {} 編寫程式,與在Form1_Load{}編寫程式有何差異。我知道Form1_Load是在顯示表單之前引發的事件,那public Form1()呢?

    3.因找不到說明資料才提問,請見諒。

    謝謝

    2012年12月22日 上午 06:56
  • 使用建構函式 (C# 程式設計手冊)

    Form.Load 事件

    簡單說, 建構式的目的在將這個物件實體化, 也就是為它配置記憶體.

    而 Form 的 Load 事件則是在外部呼叫要讓 Form 顯示出來時才會發生的事情.

    而有幾種可能會引發 Load

    (1) 如 program.cs 程式碼中的: Application.Run(new Form1());

    (2) 或是 Form.Show() 方法.

    補充: 另找到一篇 Windows Form 中事件的順序

    不過誠心地建議, 去找本對C#與Windows Form 開發基礎開發有詳細說明的書來讀一讀, 不必急著一直寫程式. 以下推薦幾本

    Visual C# 2010基礎必修課(附贈雙光碟)

    Visual C# 2010程式設計經典

    深入淺出 C#(第二版)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。


    2012年12月22日 上午 07:59
    版主
  • 感謝啦。
    2012年12月22日 上午 11:09