0

我在 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 部分类 frmConfig : Form { private 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 中的所有文本框和组合框值

4

4 回答 4

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
}
于 2012-12-05T11:14:49.593 回答
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");
    }
}
于 2012-12-05T11:15:21.240 回答
0

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

于 2012-12-05T11:16:25.193 回答
0

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

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

    public Form1(frmConfig Cont)
    {
        f2 = Cont;
        String SIp = f2.txtSrcIP.text;
    }
}
于 2012-12-05T11:33:01.480 回答