C# 如何在c中从另一个窗体访问可视组件#
我的主窗体中有一个文本框 现在我创建了一个函数,用于设置文本框的值C# 如何在c中从另一个窗体访问可视组件#,c#,winforms,C#,Winforms,我的主窗体中有一个文本框 现在我创建了一个函数,用于设置文本框的值 public void SetTextOfTextBox(String text) { textbox1.text = text; } 现在,在我的主要形式中,我调用另一个类(b类),它为我做一些工作。现在,我希望能够从类b调用我的setTextofTextBox函数 现在,如果我尝试Form1.SetTextOfTextBox(“test”)这不起作用。 我做错了什么 如何从另一个类访问窗体的组件。您需要引用类b中For
public void SetTextOfTextBox(String text)
{
textbox1.text = text;
}
现在,在我的主要形式中,我调用另一个类(b类),它为我做一些工作。现在,我希望能够从类b调用我的setTextofTextBox函数
现在,如果我尝试Form1.SetTextOfTextBox(“test”)代码>这不起作用。
我做错了什么
如何从另一个类访问窗体的组件。您需要引用类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");
}
}
您需要引用类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");
}
}
您需要引用类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");
}
}
您需要引用类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");
}
}
表格1.SetTextOfTextBox(“测试”);这不管用
这不起作用,因为SetTextOfTextBox不是静态的,您不能直接访问非静态函数。您也不能将其设置为静态,因为您的文本框是表单级控件
如何从另一个类访问窗体的组件
您必须将Form1的实例传递给其他类才能访问它。差不多
Class B = new ClassB(this); //where this is the instance of Form1.
表格1.SetTextOfTextBox(“测试”);这不管用
这不起作用,因为SetTextOfTextBox不是静态的,您不能直接访问非静态函数。您也不能将其设置为静态,因为您的文本框是表单级控件
如何从另一个类访问窗体的组件
您必须将Form1的实例传递给其他类才能访问它。差不多
Class B = new ClassB(this); //where this is the instance of Form1.
表格1.SetTextOfTextBox(“测试”);这不管用
这不起作用,因为SetTextOfTextBox不是静态的,您不能直接访问非静态函数。您也不能将其设置为静态,因为您的文本框是表单级控件
如何从另一个类访问窗体的组件
您必须将Form1的实例传递给其他类才能访问它。差不多
Class B = new ClassB(this); //where this is the instance of Form1.
表格1.SetTextOfTextBox(“测试”);这不管用
这不起作用,因为SetTextOfTextBox不是静态的,您不能直接访问非静态函数。您也不能将其设置为静态,因为您的文本框是表单级控件
如何从另一个类访问窗体的组件
您必须将Form1的实例传递给其他类才能访问它。差不多
Class B = new ClassB(this); //where this is the instance of Form1.
找到表单1
并调用该方法:
foreach (var form in Application.OpenForms) {
Form1 myForm = form as Form1;
if (!Object.ReferenceEquals(null, myForm)) {
myForm.SetTextOfTextBox("Test");
break;
}
}
找到表单1
并调用该方法:
foreach (var form in Application.OpenForms) {
Form1 myForm = form as Form1;
if (!Object.ReferenceEquals(null, myForm)) {
myForm.SetTextOfTextBox("Test");
break;
}
}
找到表单1
并调用该方法:
foreach (var form in Application.OpenForms) {
Form1 myForm = form as Form1;
if (!Object.ReferenceEquals(null, myForm)) {
myForm.SetTextOfTextBox("Test");
break;
}
}
找到表单1
并调用该方法:
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);
}
你试过使用代理吗
像这样指定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);
}
你试过使用代理吗
像这样指定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);
}
你试过使用代理吗
像这样指定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);
}
在尝试访问表单实例之前是否创建了该实例?Form1是变量还是表单名?表单就是正在运行的类。所以它叫b类。它肯定已经实例化了吗?您在尝试访问它之前是否创建了表单实例?Form1是变量还是表单名?表单就是正在运行的类。所以它叫b类。它肯定已经实例化了吗?您在尝试访问它之前是否创建了表单实例?Form1是变量还是表单名?表单就是正在运行的类。所以它叫b类。它肯定已经实例化了吗?您在尝试访问它之前是否创建了表单实例?Form1是变量还是表单名?表单就是正在运行的类。所以它叫b类。它肯定已经实例化了吗?