![](/img/trans.png)
[英]How to access a form component from another (referenced) Project in visual C# 2013?
[英]How to access a visual component from another form in c#
我的主窗體中有一個文本框。
現在,我創建了一個函數,用於設置文本框的值。
public void SetTextOfTextBox(String text)
{
textbox1.text = text;
}
現在,以我的主要形式,我叫另一個類(b類),它為我做了一些工作。 現在,我希望能夠從類b調用我的setTextofTextBox函數。
現在,如果我嘗試Form1.SetTextOfTextBox("test");
這行不通。 我究竟做錯了什么?
如何從另一個類訪問aa Form的組件。
Form1.SetTextOfTextBox(“ test”); 這不起作用
這不起作用,因為SetTextOfTextBox不是靜態的,並且您不能直接訪問非靜態的函數。 而且您也不能使其靜態,因為您的文本框是表單級控件。
如何從另一個類訪問aa Form的組件
您必須將Form1的實例傳遞給其他類才能訪問它。 就像是
Class B = new ClassB(this); //where this is the instance of Form1.
您將需要對類b中的Form1實例的引用,否則您將無法調用成員方法。
像這樣:
class Form1 : System.Windows.Forms.Form {
void functionInForm1() {
ClassB objB = new ClassB();
objB.doSomething(this);
}
}
class ClassB {
void doSomething(Form1 form) {
form.SetTextOfTextBox("test");
}
}
找出 Form1
並調用方法:
foreach (var form in Application.OpenForms) {
Form1 myForm = form as Form1;
if (!Object.ReferenceEquals(null, myForm)) {
myForm.SetTextOfTextBox("Test");
break;
}
}
您是否嘗試使用委托。
像這樣在ClassB中指定委托。
public delegate void OnDone(string textValue);
public event OnDone OnUserDone;
在ClassB通話事件中完成任務后:
OnUserDone("DoneClassB");
當您在表單映射委托函數中創建類的對象時。
Classb b=new Classb();
b.OnUserDone += new Classb.OnUsrControlDone(CompletedClasss);
以如下形式定義函數。
void CompletedClasss(string textValue)
{
SetTextOfTextBox( textValue);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.