【问题标题】:How to write to a textbox that is in another Form? [duplicate]如何写入另一个表单中的文本框? [复制]
【发布时间】:2017-08-28 10:04:10
【问题描述】:

我有一个 .NET 应用程序,它有 2 个表单:Form1 里面有所有应用程序的东西,而 LogForm 里面只有一个只读文本框。我想从 Form1 向 LogForm 内的这个文本框打印一些文本,而 Form1 正在执行所有工作。

我通过

打开我的 LogForm
LogForm logForm = new LogForm();
logForm.Show();

然后呢?我该怎么做?

【问题讨论】:

  • 您可以公开文本框。 (在属性窗格中查看它的修饰符!)
  • 这太容易了...TY!!
  • 是的,这很容易。还有更复杂的方式,尤其是。在日志表单中创建一个公共访问功能..(与下面的大多数答案不同,这似乎错过了品脱..)

标签: c# forms winforms textbox


【解决方案1】:

你必须有这个文本框的引用。

在您的 Visual Studio 表单设计器中公开您的访问修饰符,并通过 logForm1.YourTextBox.Text += "new line \r\n"; 访问您的 TextBox

【讨论】:

    【解决方案2】:

    您可以让您的 LogForm 在初始化时接受参数:

    string ValueFromForm1 = null;
    public LogForm(string input)
    {
          ValueFromForm1 = input;
    }
    

    Form_Load上的设置文本框的值:

    TextBox1.Text = ValueFromForm1 ;
    

    【讨论】:

    • 你也可以在构造函数中设置值,只要确保它在InitializaComponent()行之后
    • @Fabio 我知道,但经验表明新用户难以实施
    【解决方案3】:

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

    表格一

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

    日志表格

    TextBox1.Text=Form1.logformtext;
    

    【讨论】:

      【解决方案4】:

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

      public LogForm(string text)
      {
          InitializeComponent();
          textBox1.Text = text;
      }
      

      或者您可以在设计器上将TextBox 的修饰符设置为Internal(甚至Public),然后像这样从Form1 访问它:

      logForm.textBox1.Text = "Your text";
      

      但请记住,当您的程序运行时,文本不会显示在您的 LogForm 上,除非您重新绘制它,或使用 BackgroundWorker 让工作在不同的线程中完成。

      【讨论】:

      • 您不需要“重新绘制”表单。如果您将值直接设置为TextBox.Text,它将立即显示
      • @Fabio:视情况而定。如果程序仍在“工作”(如 OP 所建议的那样),则在重新绘制表单之前不会显示文本(这可以通过简单的“Application.DoEvents()”来实现。无论这是否是一种好习惯这里是题外话)。或者您必须使用 BackgroundWorker 让程序在不同的线程中完成工作。
      • OP 每次都调用Show 方法,所以如果他将文本设置为文本框并调用Show 它将“重新绘制”。评论只是因为提到“重绘”似乎OP需要手动重绘
      • @Fabio:尚不清楚 OP 打算如何使用 LogForm,但我现在正在编辑我的答案以使其更清楚。感谢您的意见!
      猜你喜欢
      • 2010-10-05
      • 2017-12-19
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-22
      • 2021-01-31
      • 1970-01-01
      相关资源
      最近更新 更多