Visual Studio c#:尝试将字符串发送到其他窗体

Visual Studio c#:尝试将字符串发送到其他窗体,c#,windows,forms,winforms,visual-studio,C#,Windows,Forms,Winforms,Visual Studio,我正在做一个学校的项目。 这是第一个表单中的代码,我试图从中发送一个字符串: public void textBox1_TextChanged(object sender, EventArgs e) { string ime=input_Ime.Text; var frm1 = new Form1(); frm1.imee = ime; } “Registracija”是我第一个表格的名称,Form1是我第二个表格的名称。所以我尝

我正在做一个学校的项目。 这是第一个表单中的代码,我试图从中发送一个字符串:

public void textBox1_TextChanged(object sender, EventArgs e)
    {
        string ime=input_Ime.Text;
        var frm1 = new Form1();
        frm1.imee = ime;
    }
“Registracija”是我第一个表格的名称,Form1是我第二个表格的名称。所以我尝试将“ime”发送到我的第二个表单Form1。 在Form1中,我得到了以下代码:

 public string imee { get; set; }
加上一个按钮以测试我的字符串是否正常工作:

public void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(this.imee);
    }

它不起作用。MessageBox没有显示任何内容。

常见问题。您正在创建Form1的新实例,并且正是该实例接收字符串。屏幕上实际显示的Form1实例保持不变

您可以通过查看OpenForms集合来解决此问题,搜索Form1的实例,然后,如果找到,将字符串传递给此实例

public void textBox1_TextChanged(object sender, EventArgs e)
{
    string ime=input_Ime.Text;
    var frm1 = Application.OpenForms.OfType<Form1>().FirstOrDefault();
    if(frm1 != null)
        frm1.imee = ime;
}
public void textBox1\u TextChanged(对象发送方,事件参数e)
{
字符串ime=输入\ ime.Text;
var frm1=Application.OpenForms.OfType().FirstOrDefault();
如果(frm1!=null)
frm1.imee=ime;
}

我猜您是在有人填写了
ime
之后打开第二张表单,所以在打开第二张表单时,您需要执行以下操作:

public partial class Form1: Form
{        
    string ime;

    public Form1(string ime) //with this you are requesting `ime` when creating this form
    {
        InitializeComponent();

        this.ime = ime; //with this.ime you are referring to variable of this form, and with ime you are referring to variable from function
    }
}
当您从
registicija
打开此表单时,您需要这样做

form1f1=新的Form1(输入法)

在Registracija中

   public void textBox1_TextChanged(object sender, EventArgs e)
        {
            string ime=input_Ime.Text;
            Form1 frm1 = new Form1(ime);
            frm1.show();
        }
在表格1中

public Form2(string strTextBox)
{
  InitializeComponent(); 
  Messagebox.Show(strTextBox);
}

您在哪里显示
Form1
?您可能正在使用不同的
Form1
实例,而不是相同的实例。@David我稍后显示我的Form1。@AljažTajhman:“稍后”在哪里?在显示的代码中,您创建了
Form1
的一个实例,设置一个值,从不显示它,然后由于方法结束,它立即超出范围。如果要显示不同的实例,则需要在该实例中设置值。仅代码回答没有帮助。除非你解释问题是什么,以及你的解决方案是如何解决的,否则这对任何人都不会很有用。这不是OP的问题。这是另一种方式。