如何将日期从列表框发送到另一个表单的文本框

时间:2014-11-21 11:02:59

标签: c# winforms

我有一个包含表单中多个项目的列表框。我需要选择列表框项并单击一个按钮,然后所选项应出现在另一个表单的文本框中。我怎么能这样做?

单击按钮后,我使用此代码将项目放入表单1列表框中。

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

    private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection conn2 = new SqlConnection(
            "<path>\\Database1.mdf\";Integrated Security=True");
        conn2.Open();

        ArrayList al = new ArrayList();
        SqlCommand commandtwo = new SqlCommand(
            "SELECT name FROM [dbo].[Table2]", conn2);
        SqlDataReader dr2 = commandtwo.ExecuteReader();

        while (dr2.Read())
        {
            al.Add(dr2[0].ToString());
        } 

        try
        {
            listBox1.Items.Clear();
            listBox1.Items.AddRange(al.ToArray());
            conn2.Close();
        }
        catch (Exception) 
        {}
    }

    public void button2_Click(object sender, EventArgs e)
    {         
        Form2 f2 = new Form2();
        f2.Show();
    }
}

我需要在此列表框中选择项目并单击此表单中的“更新”按钮,它将打开另一个名为Form2的表单。我需要从上一个表单(Form1)中获取所选项目,并在另一个表单(Form2)的文本框中显示它。

这是我的第二个表格(Form2)的代码

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        Form1 f1 = new Form1();
        textBox1.Text = f1.listBox1.SelectedItem.ToString();
    }
}

2 个答案:

答案 0 :(得分:4)

有很多方法可以做到这一点。一种是在第一个表单上拥有您从另一个表单访问的公共属性。但正如所说,这只是一种方法(你可以使用事件,在重载的构造函数中传递值等)。

// Form1
private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    SelectedItem = (sender as ComboBox).SelectedItem.ToString();
}

private void button_Click(object sender, EventArgs e)
{
    var frm2 = new Form2() { Owner = this };
    frm2.Show();
}

public string SelectedItem { get; private set; }

然后......

// Form2
protected override void OnActivated(EventArgs e)
{
    base.OnActivated(e);
    textBox1.Text = (Owner as Form1).SelectedItem;
}

答案 1 :(得分:0)

您必须将值传递给构造函数中的Form2。

public Form2(string value)
{
     InitializeComponent();
     textBox1.Text = value;
}

在你的Form1中,只需这样称呼:

// get the item from listbox into variable value for example
Form2 = new Form2(value);
f2.Show();