在c#中从一个表单的文本框中获取文本到另一个表单

时间:2012-12-05 11:09:21

标签: c# winforms

我在textBox中输入了一些数据,并在form2中的组合框中输入了所选项目,并想在form1中使用相同的数据,我该怎么办呢....
我试过这段代码 frmConfig是form2,txtSrcIP是TextBox

public partial class Form1 : Form
{    
    frmConfig f2 = new frmConfig();

    public Form1(frmConfig Cont)
    {
            f2 = Cont;
    }

    String SIp = f2.txtSrcIP.text;
}

错误显示在此行String SIp = f2.txtSrcIP.text; 因为字段初始值设定项不能引用非静态字段方法或属性

frmConfig身体 public partial class frmConfig:Form     {         私人Form1 f1;

    public frmConfig()
    {
        InitializeComponent();
    }
    private void btnConnect_Click(object sender, EventArgs e)
    {



            // Open connection to the database
            string conString = "server="+txtSrcIP.Text+";uid="+txtSrcUserId.Text+";pwd="+txtSrcPwd.Text; 

            using (SqlConnection con = new SqlConnection(conString))
            {
                con.Open();

                // Set up a command with the given query and associate
                // this with the current connection.
                using (SqlCommand cmd = new SqlCommand("SELECT name from sys.databases", con))
                {
                    using (IDataReader dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            cbSrc.Items.Add(dr[0].ToString());
                        }
                    }
                }
            }

    private void btnNext_Click(object sender, EventArgs e)
    {
        if (cbSrc.SelectedItem != null && cbSrc.SelectedItem != "" && cbDest.SelectedItem != null && cbDest.SelectedItem != "")
        {

            this.Hide();
            //Form1 f1 = new Form1();
            f1.Show();

            this.Close();
        }
        else
        {
            MessageBox.Show("Enter all the details");
        }
    }

    }

这就是我正在做的所以我想要form1中的所有文本框和combox值

4 个答案:

答案 0 :(得分:2)

f2上创建公开属性,公开您需要的控件的Text属性。

public string TxtSrcIPValue
{
    get
    {
        return this.txtSrcIP.text
    }
}

然后使用此属性访问该值。

Private string SIp;
public Form1(frmConfig Cont)
{
        f2 = Cont;
        SIp = f2.TxtSrcIPValue;   // Set the value once the form has been loaded
}

答案 1 :(得分:0)

static frmConfig f2 = new frmConfig();

那么,这些变化如何:

public partial class Form1 : Form
{    
    static frmConfig f2 = new frmConfig();

    public Form1(frmConfig Cont)
    {
        f2 = Cont;
    }

    public String SIp;
}

...

private void btnNext_Click(object sender, EventArgs e)
{
    if (cbSrc.SelectedItem != null && cbSrc.SelectedItem != "" && cbDest.SelectedItem != null && cbDest.SelectedItem != "")
    {

        this.Hide();
        //Form1 f1 = new Form1();
        f1.SIp = f2.txtSrcIP.text;
        f1.Show();

        this.Close();
    }
    else
    {
        MessageBox.Show("Enter all the details");
    }
}

答案 2 :(得分:0)

您要使用的控件,更改'修饰符'属性,以便您可以从外部访问它。

答案 3 :(得分:0)

引用MSDN,实例字段的变量初始化程序无法引用正在创建的实例,因此您需要初始化构造函数中的字段。

public partial class Form1 : Form
{    
    frmConfig f2;
    String SIp;

    public Form1(frmConfig Cont)
    {
        f2 = Cont;
        String SIp = f2.txtSrcIP.text;
    }
}