在C#中将TextBox文本传递到另一个窗体?

4
我尝试使用以下方式传递信息:

Form1 frm1 = new Form1(); 
 textBox1.Text = ((TextBox)frm1.Controls["textBox1"]).Text;

这是在窗体加载时获取信息的代码。但是没有文本显示。我该如何解决?Form2正在获取Form1的文本并将其显示出来。


@EliteGamer:你是如何获取frm1引用的?你能把那段代码也发一下吗? - Mark Byers
1
Form1 中的文本框是否在 Text 属性中初始化了一个值?如果没有,那就是为什么 textBox.Text 是空的原因。您希望 textBox1 中的文本应该如何显示? - IAbstract
14个回答

15

使用属性公开文本框的内容:

class Form1 {
  public string MyValue {
    get { return textBox1.Text; }
  }
}

然后在 Form2 中做这个:

var frm1 = new Form1();
frm1.ShowDialog(this); // make sure this instance of Form1 is visible
textBox1.Text = frm1.MyValue;
如果您希望frm1始终可见,则将frm1作为Form2的类变量,并在Form2的构造函数中调用.Show()

5
我发现在Windows应用程序中将文本值从一个文本框传递到另一个文本框的方法简单且逻辑清晰。
在第二个窗体中编写代码:
    Create a Parameter of *Form2* Constructor.

    namespace PassingValue
    {
         public partial class Form2 : Form
         {
             public Form2(string message)
             {
                 InitializeComponent();
                 Textbox1.Text= message;
             }
         }
    }

在第一形式中编写代码:-
   Use the Parameter of Second Form in *First Form*:-

   namespace PassValue
   {
      public partial class Form1 : Form
      {
         public Form1()
         {
            InitializeComponent();
         }

         private void Button1_Click(object sender, EventArgs e)
         {
             Form2 f2=new Form2(Textbox.Text);
             f2.Show();
         }
      }
   }

2

尝试以下代码,它对我有效...

    public static string sendtext = "";
private void button1_Click(object sender, EventArgs e)
{
sendtext = txt1.Text;
Form2 frm = new Form2();
frm.Show();
} 

在Form2的表单加载事件中访问此数据。

    private void Form2_Load(object sender, EventArgs e)
{
txt2.Text = Form1.sendtext;
}

欢迎使用


1

对我来说,最简单的方法是这样的:

  1. 将您的文本框修改器属性更改为公共;
  2. 在打开第二个窗体时,像这样打开:frm.Show(this);
  3. 在您的Form2中,无论何时需要文本,只需执行此操作:
var frm = this.Owner;
var ctl = frm.Controls.Find("textboxOnform1", true).FirstOrDefault() as 
    Control;
TextBox Txt = (TextBox)ctl; 

//And then you can use It 
textboxt1.Text= Txt.Text;
你可以做相反的事情 - 以同样的方式发送文本回来。

1

表单1

//Declare a Static variable
public static string txtInput=string.empty;`

//Set textBox Value to this variable on any event
txtInput=textBox1.Text;

表单2

// Now Call this variable from the Instance of form 1
string getForm1Value=string.empty;
getForm1Value=Form1.txtinput;

1

**

百分之百有效。

**

我可以帮忙翻译。这段需要翻译的内容涉及编程,并使用特定术语,请允许我进行逐字翻译:

拿出两个表单,表单1和表单2,表单1包含textbox1和Frm1Btn1,表单2包含Frm2Btn1,现在打开表单1,在上面点击打开表单2。

//表单1代码:

private void Frm1Btn1_Click(object sender, EventArgs e)

{
    Form2 obj=new Form2();
    obj.showDialog();
}

//FORM2编码:

private void Frm2Btn1_Click(object sender, EventArgs e)
        {

            Form1 objj = new Form1();

            objj =(Form1) Application.OpenForms["Form1"];

            objj.textBox1.Text = "Salil";

            objj=null;
        }    

0

如果这是一个网络表单,MSDN建议在请求文本的页面顶部使用此方法。

     <%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %> 

然后在 page_load 中实现

    if (PreviousPage != null)
{
TextBox SourceTextBox = 
    (TextBox) PreviousPage.FindControl("TextBox1");
if (SourceTextBox != null)
{
    Label1.Text = SourceTextBox.Text;
}
}

我会把这个留在这里,以防有人使用WebForms遇到这个问题。 - Scott Selby

0

这是关于结果表单的内容:

  1. 放置一个文本框。
  2. 必须点击表单,直到代码编辑器弹出。
  3. 在表单加载时,插入代码。

代码:

Form1 frm1 = new Form1();
frm1.Show();
textBox1.Text = ((TextBox)frm1.Controls["textBox1"]).Text;

在第一个表单上:
  1. 放置一个文本框和一个按钮。

按钮代码(在窗体加载时,输入此代码):

this.Close();

0
在form1中:hotcoffee 传递文本框 private void button15_Click(object sender, EventArgs e)//获取信用卡上的项目
    {
            this.Hide();
            hotcoffepayment p = new otcoffepayment(richTextBox2.Text);//pass form1 textbox
            p.Show();
    }

在form2中:hotcoffepayment

public hotcoffepayment(string strValue)

    {
        InitializeComponent();
        textBox1.Text = strValue;//here mention the form2 textbox name 
    }

0
在Windows应用程序中,只需转到另一个窗体设计器并将该工具声明为公共的。您可以从任何窗体访问该工具。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接