从另一个类更改文本框
我正在尝试更改位于的文本框的值
public partial class Form1 : Form
来自另一个class级。 我尝试过这样的事情
public void echo(string text) { this.textBox1.AppendText(text + Environment.NewLine); }
从另一个课我称之为
Form1 cout = new Form1(); cout.echo("Does this work?");
我得到空白输出。 我也尝试将static
关键字添加到echo
方法中,但我得到了相同的结果。 我搜索了Stack Overflow并没有得到任何解决方案。 有一件事触发了我,如果我添加cout.Show()
相同的表单弹出有效的textBox1
内容。 这是为什么?
为什么它不立即显示内容? 我该如何解决这个问题?
每次您说新的Form1()时 ,您都在创建该表单的独特且独立的实例。 相反,您需要在尝试访问表单的类中创建一个变量。 例如,让我们在构造函数中传递它:
public class MyClass { public Form1 MyForm; public MyClass(Form1 form){ this.MyForm = form; } public void echo(string text) { this.MyForm.textBox1.AppendText(text + Environment.NewLine); } }
请注意,您在echo方法中访问Form1的特定实例:
public void echo(string text) { this.MyForm.textBox1.AppendText(text + Environment.NewLine); }
问题出在这里:
Form1 cout = new Form1() ; cout.echo("Does this work?");
您正在创建主窗体的新版本Form1
。
什么是这个其他类,它是如何实例化的?
你有两个选择:
-
当
Form1
的代码创建类时,给他一个实例,并在对Form1
(唯一的)实例的引用上调用echo
方法。 -
向另一个类添加一个
event
,当他想提供一些信息时会触发该event
。 您的Form1
代码将在此事件上注册一个事件处理程序,并在事件触发时进行回调。
而不是cout
尝试使用MessageBox.Show("Does this work?");
现在将文本框值从一个表单发送到另一个表单。
protected void btnNext_Click(object sender, EventArgs e) { MyForm2 x = new MyForm2(); x.Query = "My Query"; // here "Query" is your custom public string variable on form2 x.Show() }
您不需要创建Form1的另一个对象。
尝试这个代码,我想,你会猜到发生了什么:
Form1 cout = new Form1(); cout.Show(); cout.echo("Does this work?");
你正在制作一个全新的Form1
。 调用Show()
时出现的原因是因为您正在显示您创建的新窗口。 我不确定你的实际意图是什么,因为我不知道你在哪里调用它,但是你想要做的是为已经创建的Form1
调用echo
。
上述就是C#学习教程:从另一个类更改文本框分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1037619.html