将文本从一个Form RichtextBox移动到c#中另一个窗体上的另一个窗体

时间:2010-11-24 12:27:13

标签: c# winforms text richtextbox

我正在创建一个程序,允许用户通过单独的表单添加注释,以便能够将该表单中写入的文本添加回原始表单中。目前我无法将以一种形式richtextbox编写的文本移动到主窗体中的另一个richtextbox。请帮助,

由于

4 个答案:

答案 0 :(得分:4)

最有可能的问题是由于richtextbox控件的范围。默认情况下,在窗体中创建控件时,WinForms的范围为Private。这意味着不能从另一个表单的代码直接访问该控件。有几种方法可以解决这个问题。最简单的方法是在本声明(公共/内部)中将其更改为更广泛的范围,这将允许您按照以下方式执行某些操作:

richTextBox1.Text = Form2.richTextBox1.Text;

*这假定您的代码在Form1中,而您的第二个表单名为Form2。显然需要相应地改变。

这不被视为良好做法,因为与允许程序的任何其他部分编辑此表单中包含的控件相关的潜在风险。将信息传递给表单的理想解决方案是通过构造函数,适当的作用域方法,适当的作用域属性,或者在某些情况下通过事件取决于信息的类型以及何时可以修改它以及它的用途。

在不知道有关您的具体案例的太多细节的情况下,我可能会建议使用一种方法,因为这是最简单的情况。

public void UpdateText(string value) {
   richTextBox1.Text = value;
}

这将允许其他表单和控件调用此方法,这反过来会更新richTextBox的文本。

我会注意到这些示例都不应该用在生产代码中(我没有展示如何处理交叉线程问题或数据验证),但我从问题的本质上假设你这样做更像是学习练习。

答案 1 :(得分:1)

如果您想将值移动到新表单,可以使用新表单的Constructor

public Form2(string text)
{
    textbox1.Text = text;
}

如果您希望新表单向当前表单返回值,则可以使用新表单中的Property

public string Value
{
    get
    {
        return textbox1.Text;
    }
}

并在使用中:

using (var instance = new Form2())
{
    instance.Show();
    returnValue = instance.Value;
}

答案 2 :(得分:1)

我假设您从主表单中调用新表单。在这种情况下,您可以使用发件人获取实例,也可以在表单上通过Parent属性及其子项引用另一个表单,如果另一个表单是另一个子表单。

答案 3 :(得分:0)

像这样:

richTextBox1.Text = richTextBox2.Text;

如果你想附加文字,那么:

richTextBox1.Text += richTextBox2.Text;