当前位置: 首页 > 编程语言 > C#

从另一个类更改文本框Share

时间:2023-04-10 23:26:09 C#

从另一个类更改文本框我正在尝试更改位于公共部分类Form1的文本框的值:来自另一个类的表单。我试过类似publicvoidecho(stringtext){this.textBox1.AppendText(text+Environment.NewLine);从另一个类我调用Form1cout=newForm1();cout.echo("这个有用吗?");我得到空白输出。我也尝试将static关键字添加到echo方法中,但我得到了相同的结果。我搜索了StackOverflow,但没有找到任何解决方案。触发我的一件事是,如果我添加cout.Show(),则会弹出相同的表单,其中包含有效的textBox1内容。这是为什么?为什么不立即显示内容?我怎么解决这个问题?每次调用newForm1()时,您都在创建该表单的唯一且独立的实例。相反,您需要在试图访问表单的类中创建一个变量。例如,让我们在构造函数中传递它:publicclassMyClass{publicForm1MyForm;publicMyClass(Form1form){this.MyForm=form;}publicvoidecho(stringtext){this.MyForm.textBox1.AppendText(text+Environment.NewLine);请注意,您正在echo方法中访问Form1的特定实例:publicvoidecho(stringtext){this.MyForm.textBox1.AppendText(text+Environment.NewLine);}问题在这里:Form1cout=newForm1();cout.echo("这个有用吗?");您正在创建主窗体Form1的新版本。这个其他类是什么,它是如何实例化的?您有两个选择:当Form1的代码创建该类时,为其提供一个实例,并在对Form1的(唯一)实例的引用上调用echo方法。向另一个类添加一个事件,当他想提供一些信息时触发该事件。您的Form1代码将在此事件上注册一个事件处理程序,并在事件触发时进行回调。而不是cout尝试使用MessageBox.Show("Doesthiswork?");现在将文本框值从一种形式发送到另一种形式。protectedvoidbtnNext_Click(objectsender,EventArgse){MyForm2x=newMyForm2();x.Query="我的查询";//此处“Query”是您在form2上自定义的公共字符串变量x.Show()}您不需要创建Form1的另一个对象。我想,试试这段代码,您就会猜到发生了什么:Form1cout=newForm1();cout.Show();cout.echo("这个有用吗?");您正在制作一个全新的Form1。它在您调用Show()时显示的原因是因为您正在显示您创建的新窗口。我不确定你的实际意图是什么,因为我不知道你在哪里调用它,但你想要做的是为已经创建的Form1调用echo。以上是C#学习教程:从另一个类中更改文本框共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: