【问题标题】:How to send date from a listbox to textbox of another form如何将日期从列表框发送到另一个表单的文本框
【发布时间】:2014-11-21 11:02:58
【问题描述】:

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

单击按钮后,我使用此代码将项目放入表单 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();
    }
}

【问题讨论】:

标签: c# winforms


【解决方案1】:

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

// 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;
}

【讨论】:

    【解决方案2】:

    您必须在构造函数中将值传递给 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();
    

    【讨论】:

    • 您可以,但您不必这样做。考虑表单只创建一次然后根据需要显示/隐藏的情况。
    • 你只需要重载构造函数(保持一个原样,另一个带参数并将值分配给文本框)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多