簡體   English   中英

C#在另一個類中使用winform控件

[英]C# using winform controls in another class

我有一個 WinForm 應用程序。 在主窗體上有許多控件,例如標簽、文本框等。

如果我在同一個程序集中有另一個類,我如何訪問這些控件?

例如,從我的新課程中,我想更新 Form1 中的標簽?

在標簽(或任何控件)的屬性中,將“Modifiers”選項設置為“Public”

現在您可以從 Form 的對象訪問標簽

 Form1 f = new Form1()
 f.lblMyLabel.Text = "My Text"

選擇要從另一個類/表單訪問的控件。 轉到其屬性並將其修飾符值設置為“內部”(如果您只想在同一程序集中使用它)。

現在在同一個程序集中你想使用它的地方只需創建一個該形式的對象,如

myForm objform = new myForm();
objform.txtName.Text="any text";

然后您可以使用 objform.show(); 顯示該表單; 或 objform.showdialog();

但我認為這不會解決您的問題,因為我覺得您的表單已經顯示在屏幕上,並且您想從另一個表單/類更改其標簽/文本框的值,因此為此您必須采用當前的表單對象否則它不會顯示當前顯示表單的任何更改。

所以我認為單例模式會給你完美的解決方案。 只需創建類並在該類中創建該形式的靜態對象,然后創建一個靜態函數並檢查對象是否已經初始化,不初始化它並使用現有的否則初始化它。

還有許多其他解決方案也存在,例如通過創建公共屬性,但您必須使用當前顯示表單的同一對象的引用來查看更改反映到當前顯示的表單

一種方法是在 Form1 類中創建公共屬性,以公開您嘗試修改的控件

例如,如果您的標簽在設計器中被稱為 label1,那么您可以執行以下操作:

public Label MyForm1Label { get { return label1; } }

除了已經提到的解決方案之外,您還可以為您的 Form 創建一些公共方法來提供所需的功能(如果必須在多個控件中顯示某些更改可能會很好 - 您的其他類不必記住要更改哪個)

public void SetSomething(int value)
{
   Control1.value = value;
   Control2.value = value;
   ...
}

最簡單的方法是使用:

Form1 f = new Form1() f.lblMyLabel.Text = "我的文本"

因此,您必須將 Form1 標簽“lblMyLabel”設置為公開。 我已經用richTextBox 完成了。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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