回答
如果你把它添加到一個表格有問題,你需要自己將其暴露
public class MyForm : Form
{
public MyForm()
{
InitializeComponenents();
MyButton = new Button { Text = "GO" } ;
this.Controls.Add(MyButton);
}
public Button MyButton { get; private set; }
}
你似乎添加一個按鈕到窗體,並添加一個成員的一類之間已經混淆。或者,也許只是沒有清楚地問這個問題。
如果通過「添加一個按鈕,一個WinForm程序」,你的意思是,你有代碼Form
,做一樣的東西:
var b = new Button();
this.Controls.Add(b);
那麼有沒有這樣的東西使它public
,因爲新的按鈕不是你的表單類的成員。
無論如何,建議不要將按鈕公開爲表單的公共屬性,因爲這會打破錶單的抽象並暴露內部實現。通過屬性和方法暴露所需的功能更好,但避免將按鈕本身公開。
如果您將按鈕拖到VS設計時編輯器中的窗體中,它將作爲私有成員var存儲在* .Designer.cs文件中;私有System.Windows.Forms.Button button1;如果您在Form .Controls有一個引用這個Button是私人的,他希望它是公開的,因爲你可以在VS編輯器的Modifiers屬性中更改它 – 2010-12-13 15:17:31
@Aaron:我知道,但是「編程」部分在哪裏?當某人說他是以編程的方式添加一個按鈕,這通常意味着通過運行時代碼,而不是通過設計時的UI ... – Ran 2010-12-13 15:31:07
是的,它確實意味着通過代碼在運行時...他想做什麼,你可以在設計時間在VS編輯器通過更改編輯器中暴露的「Modifiers」屬性;這就是爲什麼我更深入地提供VS解釋,因爲我的猜測是OP想要模仿該行爲 – 2010-12-14 15:00:06
做這樣的事情:
public class myOwnForm : Form
{
public Button myOwnButton;
public myOwnForm()
{
InitializeComponent();
myOwnButton = new Button();
myOwnButton.Text = "Click Me!";
myOwnButton.Size = new Size(50,50);
myOwnButton.Location = new Point(100,100);
Controls.Add(myOwnButton);
}
}
-1這不會使myOwnButto n可在myOwnForm之外公開訪問 – 2010-12-13 15:18:37
爲什麼?我已經嘗試過,它的工作... – Cokegod 2010-12-13 15:30:32
是的,這將工作;但是將所有按鈕創建爲類級別變量並不是非常動態的;也可以在VS編輯器中添加它們並隱藏它們。除非回答被編輯,否則我無法刪除我的downvote;否則我會... – 2010-12-14 14:57:29
- 1. c#訪問修飾符部分像C++
- 2. 訪問修飾符C# - 內部修飾符
- 3. 由於訪問修飾符無法訪問兒童控件
- 4. C++子類訪問修飾符?
- 5. C#訪問修飾符與傳承
- 6. C#內部訪問修飾符
- 7. C++繼承與訪問修飾符
- 8. System.Reflection.BindingFlags.Instance對應於C#訪問修飾符
- 9. Doxygen與C#內部訪問修飾符
- 10. Delphi訪問修飾符
- 11. 內部訪問修飾符
- 12. 庫級訪問修飾符
- 13. EventInfo訪問修飾符
- 14. 動態訪問修飾符
- 15. 練習訪問修飾符
- 16. 類訪問修飾符
- 17. 保護訪問修飾符
- 18. 通過訪問修飾符
- 19. 包訪問(protected修飾符)
- 20. 有條件訪問修飾符?
- 21. Java訪問修飾符:無修飾符與「默認」
- 22. 將對象綁定到WinForms控件和訪問修飾符
- 23. 更改ASP.NET控件的訪問修飾符
- 24. 如何更改用戶控件的訪問修飾符
- 25. 事件處理程序訪問修飾符MFC vs C#WinForms
- 26. 訪問修飾符VS屬性
- 27. Java訪問修飾符優先
- 28. 成員類訪問修飾符
- 29. 訪問Javascript中的修飾符
- 30. 訪問修飾符的內部類
你如何編程添加呢?您是在設計時還是運行時添加它? – 2010-12-13 15:04:13