C# 如何写入另一种形式的文本框?

C# 如何写入另一种形式的文本框?,c#,forms,winforms,textbox,C#,Forms,Winforms,Textbox,我有一个.NET应用程序,它有两个表单:在Form1中有所有的应用程序内容,而在LogForm中只有一个只读文本框。我想在Form1执行所有工作时,将一些文本从Form1打印到LogForm内的文本框中 我通过 LogForm logForm = new LogForm(); logForm.Show(); 但是后来呢?我该怎么做呢?您可以让您的日志表单在初始化时接受参数: string ValueFromForm1 = null; public LogForm(string input) {

我有一个.NET应用程序,它有两个表单:在Form1中有所有的应用程序内容,而在LogForm中只有一个只读文本框。我想在Form1执行所有工作时,将一些文本从Form1打印到LogForm内的文本框中

我通过

LogForm logForm = new LogForm();
logForm.Show();

但是后来呢?我该怎么做呢?

您可以让您的日志表单在初始化时接受参数:

string ValueFromForm1 = null;
public LogForm(string input)
{
      ValueFromForm1 = input;
}
打开
表单加载
设置文本框的值:

TextBox1.Text = ValueFromForm1 ;

您可以在
LogForm
的构造函数中设置文本:

public LogForm(string text)
{
    InitializeComponent();
    textBox1.Text = text;
}
或者,您可以在设计器中将
文本框的修饰符设置为
内部
(甚至
公共
),然后从
表单1
访问它,如下所示:

logForm.textBox1.Text = "Your text";

但请记住,当程序运行时,文本不会显示在
日志表单上,除非您重新绘制它,或使用a在其他线程中完成工作。

您必须有此文本框的引用


在visual studio表单设计器中将访问修饰符设置为public,并通过
logForm1.YourTextBox.Text+=“新行\r\n”访问文本框

在Form1中创建一个公共变量并在LogForm中调用

表格一

public static string logformtext;
logformtext="Required text"; //Value which you want to pass to LogForm
对数形式

TextBox1.Text=Form1.logformtext;

您可以将文本框公开。(在属性窗格中查看它的修改器!)这太简单了…TY!!是的,那很容易。还有更复杂的方法,特别是在日志表单中创建公共访问功能。。(与下面的大多数答案不同,它们似乎漏掉了一品脱……)您不需要“重新绘制”表单。如果将值直接设置为
TextBox.Text
将直接显示away@Fabio:视情况而定。如果程序仍在“工作”(如OP所建议的),文本将不会显示,直到表单被重新绘制(这可以通过简单的“Application.DoEvents()”实现。这是否是良好的实践在这里是离题的)。或者您必须使用BackgroundWorker让程序在不同的线程中执行工作。OP每次调用
Show
方法,因此如果他将文本设置为textbox并调用
Show
,则将是“重新绘制”。评论只是因为提到“重画”似乎是OP需要重画manually@Fabio当前位置不清楚OP打算如何使用LogForm,但我正在编辑我的答案以使其更清楚。谢谢你的意见!您也可以在构造函数中设置值,只需确保它位于
initializationcomponent()之后line@Fabio我知道这一点,但经验表明,新用户很难实现它