gpt4 book ai didi

C#:如何将文本附加到类中表单上的文本框?

转载 作者:太空宇宙 更新时间:2023-11-03 22:23:51 27 4
gpt4 key购买 nike

我有一个名为“Form1.cs”的表单,它调用一个我们将称为“Class1.cs”的类,还有另一个名为“Form2.cs”的表单。 Class1 中的子例程需要更新 Form2 中的文本框(如果该窗体已打开)。文本需要在附加到文本框中的当前文本后显示,以便实时更新。我不知道如何进行这项工作。我已经尝试了很多东西,他们没有给我错误,但他们也没有将文本写入文本框。

此处的每个请求是我当前的代码。请记住,这是在将其实现到真实项目之前弄清楚这一点的测试项目。

Form1.cs 中的代码

namespace Test
{
public partial class Form1 : Form
{
Form2 cs_form2 = new Form2();
Class1 cs_class1 = new Class1();
public Form1()
{
InitializeComponent();

}
public void button1_Click(object sender, EventArgs e)
{
cs_class1.Writelog();
}
private void Form1_Load(object sender, EventArgs e)
{
cs_form2.Show();
}
public void writeToTextbox()
{
i = 0;
while(i<=10)
{
cs_form2.testTextBox.AppendText("still works");
i++;
}
}
}
}

Form2.cs 中的代码

namespace Test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void clear_Click(object sender, EventArgs e)
{

testTextBox.Text = "";
}

public void AppendText()
{
testTextBox.AppendText("asklvhslieh");
}
}
}

Class1 中的代码

namespace Test
{
class Class1
{
Form2 cs_form2 = new Form2();

public void Writelog()
{
cs_form2.testTextBox.AppendText("asg");
}
}
}

最佳答案

编辑:通过编写 new Form2(),您在 Class1 中的代码正在创建一个新的 Form2 实例>.
此实例与在 Form1 中创建的其他实例没有任何关系(也是通过编写 new Form2())实际上是可见的。
您需要为 Class1 提供 Form2 的现有实例,可能使用静态属性(如下所述)。


预编辑

要将文本附加到文本框,您应该调用 AppendText 方法。

要在 Form2 之外执行此操作,您应该在 Form2 上创建一个调用 AppendTextpublic 方法。

例如:

partial class Form2 : Form {
...
public void AppendMyText(string text) {
myTextbox.AppendText(text);
}
...
}

要在 Class1 中调用此方法,您需要引用 Form2 对象。
如果您一次只有一个 Form2,您可以创建一个静态属性,如下所示:

partial class Form2 : Form {
static Form2 instance;
public static Form2 Instance { get { return instance; } }

protected override void OnShown(EventArgs e) {
base.OnShown(e);
instance = this;
}

protected override void OnClosed(EventArgs e) {
base.OnClosed(e);
instance = null;
}

Class1(或其他任何地方)中,您可以编写

if (Form2.Instance != null)
Form2.Instance.AppendMyText(someString);

请注意,您需要在 UI 线程上执行此操作;如果您在后台线程上运行,则可以调用 BeginInvoke

关于C#:如何将文本附加到类中表单上的文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2140493/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com