将文本框链接到变量?

时间:2010-03-28 15:41:24

标签: c# textbox

我想直接访问另一个表单上文本框内的文本,因此我在表单中添加了一个公共变量_txt并添加了一个类似的事件:

private void richTextBox1_TextChanged(object sender, EventArgs e)
{
    _txt = richTextBox1.Text;
}

但表单加载如下:

public FrmTextChild(string text)
{
    InitializeComponent();
    _txt = text;
    richTextBox1.Text = _txt;
    Text = "Untitled.txt";
}

有没有更好的方法直接链接这两个?

3 个答案:

答案 0 :(得分:6)

您可以使用属性来直接从TextBox中读取。这样你根本不需要额外的变量。

public string Text
{
  get
  {
    return richTextBox1.Text;
  }
}

如果您还希望能够更改文本,请添加setter。

答案 1 :(得分:2)

我认为你不应该让表格引用彼此的控件:当你改变布局时,你将不得不为另一个重写代码。将共享值存储在一个单独的类中并将两个表单引用 是更好的恕我直言。像这样:

public class DataContainer
{
    public string SomeData{get;set;}
}

public class Form1:Form
{
   private DataContainer _container;
   public Form1(DataContainer container)
   {
      _container=container;
   }

   private void richTextBox1_TextChanged(object sender, EventArgs e) 
   { 
       _container.SomeData = richTextBox1.Text; 
   } 

   private void SpawnForm2()
   {
      var form2=new Form2(_container);
      form2.Show();
}

public class Form2:Form
{
   private DataContainer _container;
   public Form2(DataContainer container)
   {
     _container=container;
   }
}

答案 2 :(得分:0)

另一种方法是将 TextBox (或您要访问的任何其他控件)的修饰符属性设置为受保护的内部然后打开第二个表单,所有者是第一个表单。

这样,您可以稍后使用以下内容访问控件及其属性:

((Form1)this.Owner).textBox1.Text = "This is a message from the second form";