2009-02-19 68 views
5

我想在控件的事件處理程序中添加一個控件(如按鈕單擊事件)。動態地向用戶控件添加控件

我試圖動態地添加一個DataGridView查找控制,但我無法得到那個工作,所以我嘗試只是增加一個按鈕,使用此代碼:

private void btnCreateNewButton_Click(object sender, EventArgs e) 
{ 
    Button btn = new Button(); 
    btn.Location = new Point(100, 640); 
    btn.Size = new Size(100, 30); 
    btn.Text = "Click Me"; 
    btn.Click += (s, ea) => MessageBox.Show("New button clicked"); 
    this.Controls.Add(btn); 
} 

,當我點擊我的新建按鈕,不出現按鈕。

如果我將完全相同的代碼添加到窗體而不是usercontrol中,該按鈕將按照預期創建並顯示,但在用戶控件中不會發生任何事情。 在用戶控制我也試過

this.Parent.Controls.Add(btn) and 
this.ParentForm.Controls.Add(btn) 

但無濟於事。

有人有什麼想法嗎?

謝謝, Ciaran。

+0

第一個版本(this.Controls.Add)正常工作... 如果UserControl高於640 – 2009-02-19 14:06:50

回答

1

將您的按鈕放在100,640點上。請確保您的用戶控件可以容納您的動態按鈕。否則,你不會看到它。 我用你的代碼,它對我來說工作得很好,只要確保父窗體和用戶控件的大小合適。

+1

感謝您的支持,出於某種原因顯示在控件下方。我需要調用BringToFront() – 2009-02-19 14:30:00

1

最有可能的只是您的按鈕被放置在父控件的邊界之外和/或在另一個控件之後。我不相信用戶控件或窗體在運行時添加控件方面是特殊的,但是一個簡單的區別可能是窗體默認是可重新定義的,而用戶控件卻不是?無論哪種方式,我不認爲任何控制類型會自動調整大小,以適應他們的所有子控件,所以很容易把一個新的/動態控件放在錯誤的地方,讓它不可見。