【问题标题】:Transferring information between forms在表单之间传输信息
【发布时间】:2013-05-09 18:21:07
【问题描述】:

我已经在这个项目上工作了大约一个小时,但我陷入了困境。我有 4 个表格,但只有最后 3 个是相关的。在表格 2 中,我使用:

    this.Visible = false;
    Form3 Form3 = new Form3();
    Form3.Show();

创建并显示表格 3。 Form3 也有一个空文本框,我想将该信息传输到 Form4 中的标签。在表格 3 中,我使用与表格 2 相同的 cod 来制作表格 3。

我已经尝试了一些方法并在论坛上进行了搜索,但似乎没有任何效果......

     lblN2.Text = Form3.txtf.Text;

我想将用户在Form3中的文本框(txtf)中写入的文本转移到Form4中的空标签(lblN2)中。

【问题讨论】:

  • 您要完成什么(将表单 2 的值发送到 3 或什么?)??
  • 你这里没有一个很明确的问题。
  • 您的陈述中似乎缺少 Form4:lblN2.Text = Form3.txtf.Text;

标签: c# forms multiple-forms


【解决方案1】:

尝试这样的事情(Form3 类中的代码):

    Form4 frm4 = new Form4();
    frm4.lblN2.Text = this.txtf.Text;
frm4.Show();

另一种方法是修改Form4中的构造方法以接受字符串参数并调用它,如下所示:

 Form4 frm4 = new Form4(this.txtf.Text);
    frm4.Show();

【讨论】:

    【解决方案2】:

    根据您的信息,我认为您想将 form2 的值发送到 form3,您可以修改构造函数(作为解决方案)以将 form2 的值发送到 form3。这是一个示例。

    对于表格 2:

    this.Visible = false;
    Form3 frm = new Form3(value-you-want-to-send);
    frm.Show();
    

    在 Form3 中,您应该让构造函数接受参数以从 Form2 AS 中获取值:

    public void Form3(value-you-want-to-receive)
    {
      //set the label text to the string received
    }
    

    【讨论】:

      【解决方案3】:

      您可能应该在语句中指定 Form4,例如:

      Form4 _frm4 = new Form4();
      _frm4.lblN2.Text = Form3.txtf.Text
      

      【讨论】:

      • 我目前遇到的错误是:非静态字段、方法或属性需要对象引用。对于 Form3。
      • 你必须像创建Form3一样创建Form4对象,即:Form4 _frm4 = new Form4();
      【解决方案4】:

      在表格 3 上...

          private void button1_Click(object sender, EventArgs e)
          {
              Form4 frm = new Form4(textBox1.Text);
              frm.Show();
          }
      

      在表格 4 上...

      public partial class Form4 : Form
      {
          private string _valueFromOtherForm;
          public Form4()
          {
              InitializeComponent();
          }
      
          public Form4(string valuePassed)
          {
              InitializeComponent();
              _valueFromOtherForm = valuePassed;
          }
      
          private void Form4_Load(object sender, EventArgs e)
          {
              label1.Text = _valueFromOtherForm;
          }
      }
      

      }

      【讨论】:

        【解决方案5】:

        Form4中,写一个类似的方法:

        public void ReceiveTextFromAnotherForm(string theText)
        {
          //set the label text to the string received
        }
        

        Form3 中,执行以下操作:

        Form4 theForm4 = new Form4();
        theForm4.ReceiveTextFromAnotherForm(this.txtf.Text);
        theForm4.Show();
        

        【讨论】:

          【解决方案6】:

          如果你想向form4传递一些东西,那么你可以在form4上创建一个公共变量,然后你可以在form3上做这样的事情:

          this.hide();
          form4 form4 = new form4();
          form4.variable = textbox1.text;
          form4.show();
          

          然后在 form4_load 你可以:

          textbox2.text = variable;
          

          【讨论】:

          • 我不确定public 数据是最好的方法。一般来说,至少据我所知,你最好有充分的理由公开数据。考虑到还有其他解决方案,在表单之间传递数据可能还不够好。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-25
          相关资源
          最近更新 更多