2013-04-30 85 views
0
public static T newitem<T>(Form Control, int Left, int Top, string Text = "", bool Visible = true) where T : new() 
    { 
     T a = new T(); 
     a.Left = Left; 
     a.Top = Top; 
     a.Text = Text; 
     a.Visible = Visible; 
     Control.Controls.Add(a); 
     return a; 
    } 

我想寫一個函數,將窗體控件添加到我的窗體。當我嘗試訪問a.xxx時,出現錯誤。 錯誤:'T'不包含'Left'的定義,並且沒有找到接受'T'類型的第一個參數的擴展方法'Left'。 我該如何解決這個問題?在窗體窗體控件上使用模板

回答

1

添加一個附加約束,其中T : Control因爲您只能將控件添加到表單。這限制了T的類型爲Control,這確保了Left屬性可用(它的控制權爲defined