我有一个包含表单中多个项目的列表框。我需要选择列表框项并单击一个按钮,然后所选项应出现在另一个表单的文本框中。我怎么能这样做?
单击按钮后,我使用此代码将项目放入表单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();
}
}
答案 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();