[英]c# Forms Project: Passing Information to User Control
我創建了一個使用TabControl的窗體應用程序。 對於每個選項卡,我想放置一個包含所有其他控件的UserControl(在同一項目中創建)。 但是,我將需要將一些信息從主表單傳遞給UserControl,以使其具有事件,方法等屬性。我如何/應該這樣做?
我嘗試使用參數創建構造函數,但隨后Designer失敗,因此我必須刪除添加的UserControl引用。
謝謝!
構造函數參數是正確的方法。 但是,仍然必須有一個默認的構造函數,以便Designer能夠構造(和繪制)對象的副本。
我通常的解決方法是在默認構造函數中放置一個子句,檢查是否處於“設計模式”,如果不是,則拋出異常:
public class MyForm: Form
{
public MyForm()
{
if(!DesignMode) throw new InvalidOperationException("Cannot use default constructor in production code");
}
public MyForm(MyDependency dependent)
{
...
}
}
您可以通過在usercontrol.cs文件中創建的函數傳遞信息。
例如在usercontrol.cs中
public string name;
public void SetName(string pname)
{
this.name = pname;
}
或您想更改按鈕名稱
Button mybutton = new Button();
public void SetButtonName(string btname)
{
this.mybutton.Text = btname;
}
現在您可以在mainform.cs中調用這些函數
Myusercontrol usc = new Myusercontrol();
usc.SetName("this is string for 'name' string");
usc.SetButtonName("this is string for button text");
嘗試創建構造函數,但還要創建默認的無參數構造函數。
看看這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.