2015-09-13 113 views
0

我想添加一個按鈕到窗體使用代碼和iv'e在互聯網上查找它,但沒有任何工作。從代碼添加按鈕

public void addSnake() 
{ 
    Button btn = new Button(); 
    btn.Location = new Point(360, 390); 
    btn.Size = new Size(10, 10); 
    btn.Text = ""; 
    btn.Name = num + ""; 
    btn.Tag = this.oneD; 
    btn.IsAccessible = false; 
    Controls.Add(btn); 
} 

public Point getPoint() 
{ 
    Button btn = (Button)Controls.Find(num + ""); 
    return this.pos; //temporary 
} 

它說「名稱'控件'在當前上下文中不存在」。 (兩種功能)

注:功能addSnake和用GetPoint是一類我做

全部代碼在這裏裏面:刪除

+0

顯示整個代碼 – Rahul

+0

是你做的'System.Windows.Forms.Form'繼承類?否則,如果您沒有自行申報,則沒有此類財產。 – Streamline

+0

添加完整的代碼。 我該如何做到這一點? –

回答

1

你的類不是從System.Windows.Forms.Form繼承。所以不存在這樣的屬性,稱爲Controls

你可以做的是通過以下形式的參考的SnakeB構造:

public class SnakeB 
{ 
    private System.Windows.Forms.Form parentForm; 

    public SnakeB(System.Windows.Forms.Form parent) 
    { 
     parentForm = parent; 
    } 
} 

,並在你的方法是這樣使用它:

public Point getPoint() 
{ 
    Button b = parentForm.Controls.Find(num + "") as Button; 
    return b.Location; 
} 

public void addSnake(bool isFirst) 
{ 
    Button b = new Button(); 
    // ... 
    parentForm.Controls.Add(b); 
} 

用法:

public Form1() 
{ 
    InitializeComponent(); 
    SnakeB snake = new SnakeB(this); 
} 
0

您需要在您的類中有該窗體的實例並將該控件添加到該實例像

public class SnakeB 
{ 
    int num; 
    int oneD; 
    Point pos = new Point(); 
    Form1 frm1 = new Form1(); 



frm1.Controls.Add(btn); 

您將如何獲得表格的實例?像下面

public Form1() 
    { 
     InitializeComponent(); 
     SnakeB snake = new SnakeB(this); 
    } 

在你的班上有一個類似的consructor

public class SnakeB 
{ 
    int num; 
    int oneD; 
    Point pos = new Point(); 
    Form1 frm1; 

    public SnakeB() 
    { 
     this.num = 0; 
     this.oneD = 2; 
     //here construct the maain head button and 2 reguler ones 
     addSnake(true); 
     addSnake(false); 
     addSnake(false); 
    } 

    public SnakeB(Form1 frm) : this() 
    { 
     this.frm1 = frm; 
    } 
+0

它創建一個循環加載「Form1」一遍又一遍,這會導致一個計算器 –