传递文本框';将文本转换为C#中的另一种形式?

传递文本框';将文本转换为C#中的另一种形式?,c#,winforms,C#,Winforms,我尝试了以下方法来传递信息: Form1 frm1 = new Form1(); textBox1.Text = ((TextBox)frm1.Controls["textBox1"]).Text; 这是在获取信息的表单的表单加载中。但是没有文本。我该如何解决这个问题Form2正在抓取Form1的文本并显示它。如果是web表单,MSDN会在请求文本的页面顶部建议这样做 <%@ PreviousPageType VirtualPath="~/SourcePage.aspx"

我尝试了以下方法来传递信息:

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

这是在获取信息的表单的表单加载中。但是没有文本。我该如何解决这个问题
Form2
正在抓取
Form1
的文本并显示它。

如果是web表单,MSDN会在请求文本的页面顶部建议这样做

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

在Form2中,单击按钮或任何其他事件使用

表格二

private void button1_Click(object sender, EventArgs e)
 {
            Form1 _form1 = new Form1();
            this._form2TextBox.Text = _form1.textBox1.Text;
 }

有关更多详细信息,请访问使用属性公开文本框的内容:

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()

确保Form1的textBox1.Text属性初始化为您可以看到的实际字符串。我怀疑,由于您使用的是Form1的默认实例,TextBox1.Text属性是默认值(以及为什么您没有得到任何看起来是您期望的可见文本)。

Form1

 class Form1
    {

        public System.Windows.Forms.TextBox textBox1; // we need to make it public Textbox
        private System.Windows.Forms.Button button1;
    }
//Declare a Static variable
public static string txtInput=string.empty;`

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

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

尝试下面的代码,它的工作为我

    public static string sendtext = "";
private void button1_Click(object sender, EventArgs e)
{
sendtext = txt1.Text;
Form2 frm = new Form2();
frm.Show();
} 
在form2的form load事件中访问此数据

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

100%工作

**

取两个表格,表格1和表格2,表格1包含文本框1和Frm1Btn1,表格2包含Frm2Btn1,现在打开表格1,单击打开表格2

//表格1编码:

private void Frm1Btn1_Click(object sender, EventArgs e)

{
    Form2 obj=new Form2();
    obj.showDialog();
}
//表格2编码:

private void Frm2Btn1_Click(object sender, EventArgs e)
        {

            Form1 objj = new Form1();

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

            objj.textBox1.Text = "Salil";

            objj=null;
        }    

您可以做的一件简单的事情是将textbox值存储到一个变量中,然后使用构造函数将其传递给另一个表单。例如

string textboxvalue=textbox1.Text();
form2 win = new form2(textboxvalue);

这里,form2是您要发送值的表单,win是该表单的实例。

我发现在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();
         }
      }
   }
以第一种形式编写代码:-

    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();
         }
      }
   }

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

这在结果表单上:

  • 放一个文本框
  • 必须单击表单,直到代码编辑器弹出
  • 在表单加载时,插入代码
  • 代码:

    关于第一种形式:

  • 放一个文本框和一个按钮
  • 按钮代码(在加载表单时,输入此代码):

    表格一:热咖啡

    传递文本框 私有作废按钮15_单击(对象发送者,事件参数)//获取信用卡上的项目

        {
                this.Hide();
                hotcoffepayment p = new otcoffepayment(richTextBox2.Text);//pass form1 textbox
                p.Show();
        }
    
    格式2:hotcoffepayment

    公共hotcoffepayment(字符串标准值)


    您必须将textbox的Modifier属性设置为“public”,以便从另一个表单获取其值

    对于我来说,最简单的方法如下:

  • 将Textbox modifiers属性更改为Public
  • 在你打开第二张表格的地方,像这样打开:frm.Show(这个)
  • 在Form2中,只要您需要文本,请执行以下操作:

  • 你可以用同样的方法做相反的事情-发回文本。

    @EliteGamer:你如何获得参考
    frm1
    ?您也可以发布该代码吗?
    Form1
    中的文本框是否用
    Text
    属性中的值初始化?如果没有,那么这就是为什么
    文本框.Text
    为空。您希望文本如何显示在
    textBox1
    中?如果有人在使用WebForms时遇到此问题,我就把它留在这里,这样做比在
    控件
    集合中搜索特定控件名称要好(例如,因为在表单设计器中重命名控件不会破坏此代码),如果你经常做这种事情,你最终会得到一个不太清晰,也不太容易维护的代码。不过,在一个小的代码库中应该不会有问题。-1:尽管@stakx提到了这一点,而且你也同意,但我还是要投反对票。我不同意这种做法,即使是在很小的代码库中。这是一个糟糕的做法,我希望设计师甚至没有给你选择。有更好的方法来提供所需的功能。
        {
                this.Hide();
                hotcoffepayment p = new otcoffepayment(richTextBox2.Text);//pass form1 textbox
                p.Show();
        }
    
        {
            InitializeComponent();
            textBox1.Text = strValue;//here mention the form2 textbox name 
        }
    
    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;