将值从一个表单发送到另一个表单

Nag*_*agu 74 c# modal-dialog winforms

我想在两个表单(c#)之间传递值.我该怎么做?

我有两种形式:Form1和Form2.

Form1包含一个按钮.当我单击该按钮时,Form2应该打开,Form1应该处于非活动模式(即不可选).

Form2包含一个文本框和一个提交按钮.当我在Form2的文本框中键入任何消息并单击提交按钮时,Form2应该关闭,Form1应该使用提交的值突出显示.

我该怎么做?有人可以通过一个简单的例子帮助我做到这一点.

Jes*_*alm 49

有几个解决方案,但这是我倾向于使用的模式.

// Form 1
// inside the button click event
using(Form2 form2 = new Form2()) 
{
    if(form2.ShowDialog() == DialogResult.OK) 
    {
        someControlOnForm1.Text = form2.TheValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

和...

// Inside Form2
// Create a public property to serve the value
public string TheValue 
{
    get { return someTextBoxOnForm2.Text; }
}
Run Code Online (Sandbox Code Playgroud)


小智 36

private void button1_Click(object sender, EventArgs e)
{
        Form2 frm2 = new Form2(textBox1.Text);
        frm2.Show();    
}
Run Code Online (Sandbox Code Playgroud)
 public Form2(string qs)
    {
        InitializeComponent();
        textBox1.Text = qs;

    }
Run Code Online (Sandbox Code Playgroud)

  • 我测试了这段代码,如果我们不调用Form2的默认构造函数,`public Form2(string qs):this(){}`表单将不会很好地显示. (2认同)

小智 13

定义属性

public static class ControlID {  
    public static string TextData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在里面 form2

private void button1_Click(object sender, EventArgs e)
{  
    ControlID.TextData = txtTextData.Text;   
}
Run Code Online (Sandbox Code Playgroud)

获取数据form1form3

private void button1_Click(object sender, EventArgs e)
{   
    string text=  ControlID.TextData;   
}
Run Code Online (Sandbox Code Playgroud)


Suj*_*H S 7

经过一系列努力将数据从一种形式传递到另一种形式后,我终于找到了一个稳定的答案.它就像魅力一样.

您需要做的就是public static datatype 'variableName'在一个表单中声明一个变量,并将值分配给您想要传递给另一个表单的变量,并直接使用表单名称以另一个形式调用此变量(不要将此表单的对象创建为静态变量可以直接访问)并访问此变量值.

这样的例子是,

Form1中

public static int quantity;
quantity=TextBox1.text; \\Value which you want to pass
Run Code Online (Sandbox Code Playgroud)

窗体2

TextBox2.Text=Form1.quantity;\\ Data will be placed in TextBox2
Run Code Online (Sandbox Code Playgroud)

  • 这种方法的问题是如果你打开了多个Form1,它们会覆盖"数量"值.并且您的Form2获取最新打开的Form1的值. (4认同)