簡體   English   中英

c#Forms項目:將信息傳遞給用戶控件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM