我想在Form1上填充一个组合框,当单击Form2上的OK按钮时 .
首先,单击Form 1上的Load Form 2按钮以显示Form 2 . 然后,出现Form2,如果按下OK(Form2上的按钮),则必须使用SQL SERVER数据库表中的值填充Form1 ComboBox .
public partial class FORM1 : Form
{
public void LoadValue()
{
string query = "SELECT FullName FROM Studs ";
SqlCommand cmd = new SqlCommand(query, FORM1conn);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
FORM1COMBOBOX.Items.Add(reader.GetString(0));
}
}
}
public partial class FORM2 : Form
{
private void FORM2_OK_Button_Click(object sender, EventArgs e)
{
//HERE I WANT TO CALL THE LOADVALUE() METHOD OF FORM1 ????????
}
}
EDIT: 在form2.cs中:
public partial class FORM2 : Form
{
public FORM2(SqlConnection connfromFORM3)
{
Form2Conn = connfromFORM3;
InitializeComponent();
}
private Form1 form1;
public SELECTGROUPHEADDIALOG(FORM1 form1) : this()
{
this.form1 = form1;
}
private void FORM2_OK_Button_Click(object sender, EventArgs e)
{
//HERE I WANT TO CALL THE LOADVALUE() METHOD OF FORM1 ????????
}
}
2 回答
Updated
您可以尝试在Form2的构造函数中传递Form1实例
例:
Updated
试试这个:
您的设计听起来像Form2用作对话框 . 虽然您的设计方法很好,但实现和架构却不是 . 当您显示Form2时,您应该使用ShowDialog方法调用,并等待DialogResult . 如果DialogResult没问题,那么你知道你应该填充你的ComboBox . 至于从Form2返回数据,您需要公开Form1可以访问的属性或字段 . 这是一个代码示例:
Form1.cs
Form2.cs
Form1上只有一个ComboBox和Button,按钮显示form2,而Form2上只有一个调用DoWork的按钮 . 您可以在准备关闭表单时通过设置来控制DialogResult . “Items”字段将是您的数组或数据源返回数据的集合 .