2014-02-11 92 views
0

我需要動態創建按鈕(一個用於循環)並在其上添加「onClick」和「doubuleClick」事件。動態創建按鈕並向其添加事件

我做了這樣的:

Button bt = new Button(); 

    bt.Click += bt_Click;   
    bt.DoubleClick += bt_DoubleClick; 

    private void bt_Click(object sender, EventArgs e) 
    { 
     label1.Text = this.Text; 
    } 

    private void bt_DoubleClick(object sender, EventArgs e) 
    { 
     //some code 
    } 

第一:我的 「bt_Click」 的方法獲取 「LABEL1」, 「主要形式」 的文字。在調試器中,我看到發件人是一個按鈕。它有什麼問題?

第二:我的「bt_DoubleClick」事件根本沒有反應,我在這裏做錯了什麼?

任何幫助表示讚賞。

回答

0

最簡單的方法就是使用「datagrid」。 Datagread對所有事件和項目組織(圖像,文本等)都有很好的支持。 我已經使用「保存」或「打開」對話框來瀏覽遠程SFTP服務器的內容,使用datagrad非常容易,但是我在使用按鈕或標籤時遇到問題。

3

你應該投發件人按鈕得到bt.Text:

Button bt = new Button(); 
bt.Click += bt_Click; 
bt.Text = "click me"; 
bt.Location = new Point(100,100); 
this.Controls.Add(bt); 

private void bt_Click(object sender, EventArgs e) 
{ 
    label1.Text = (sender as Button).Text; 
} 

按鈕沒有反應到雙擊事件。您可以詳細閱讀here

+0

謝謝!第一個問題已經通過將發送者發送給Button來解決。我可以做任何事情來即興創作「doubleClick」,我需要它來製作表單,這將打開文件夾內容雙擊(如在Windows中) – Milos

+0

你可以使用標籤或圖像的雙擊,你只是不能使用一個按鈕恐怕。 –

+0

它與標籤一起使用。標籤的小問題很難標記標籤(文本旁邊的圖像,如窗口中的文件夾)。標籤沒有方法「TextImageRelation」。 – Milos

1

回覆第一個問題,如果我理解正確,在this.Text,this指的是表格,因爲方法bt_Click是主窗體類的成員。我認爲你可能會這樣做:

private void bt_Click(object sender, EventArgs e) 
    { 
     label1.Text = (Button)sender.Text; 
    } 

第二:這只是一個bt_Click處理程序發射兩次的情況嗎?

相關問題