C# 将comboBox传递到其他窗体
尝试将数据从主窗体中的comboBox传递到位于不同窗体中的comboBox,虽然我经历了其他类似/相同的线程,但我无法理解为什么它不希望以不同的窗体显示 主要形式:C# 将comboBox传递到其他窗体,c#,forms,combobox,C#,Forms,Combobox,尝试将数据从主窗体中的comboBox传递到位于不同窗体中的comboBox,虽然我经历了其他类似/相同的线程,但我无法理解为什么它不希望以不同的窗体显示 主要形式: public static ComboBox cb = new ComboBox(); private void ComboTransfer() { string sql = "SELECT [Department] FROM [employeeTable]"; SqlC
public static ComboBox cb = new ComboBox();
private void ComboTransfer()
{
string sql = "SELECT [Department] FROM [employeeTable]";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
comboBox1.Items.Add(dr[0]);
}
cb = comboBox1;
Department_wise_Employee_Details dep = new Department_wise_Employee_Details(cb);
}
部门员工详细信息表:
public partial class Department_wise_Employee_Details : Form
{
public Department_wise_Employee_Details()
{
InitializeComponent();
}
public Department_wise_Employee_Details(ComboBox cb)
{
comboBox1 = cb;
}
}
将全局静态
cb
传递到第二个表单可能会起作用,但您需要读取此传递组合的项目,并逐个添加在第二个表单中定义的组合框中
如果您只是重新分配第二个组合以使用全局组合,那么还需要将该组合添加到第二个表单的控件集合中(我不确定在这里使用静态控件会有什么副作用)
也许最好的方法是传递共享数据,让表单引擎使用控件执行其常规工作。在这种情况下,您将加载一个包含要共享的数据的DataTable
,并使用它设置两个组合的datasource属性
比如说
private void ComboTransfer()
{
DataTable dt = new DataTable();
string sql = "SELECT [Department] FROM [employeeTable]";
using(SqlCommand cmd = new SqlCommand(sql, con))
using(SqlDataReader dr = cmd.ExecuteReader())
{
dt.Load(dr);
}
comboBox1.DataSource = dt;
Department_wise_Employee_Details dep =
new Department_wise_Employee_Details(dt);
}
....
public partial class Department_wise_Employee_Details : Form
{
....
public Department_wise_Employee_Details(DataTable dt)
{
InitializeComponent();
this.comboBox1.DataSource = dt;
}
....
}
在这种情况下,始终将数据传递给新表单,而不是控件。ComboBox可以很容易地与数据源绑定,如DataTable、List等。能否显示另一个表单的构造函数?我假设您在Details表单中拥有的只是一个构造函数。您是否也有空构造函数?在Details表单中是否有comboBox1对象。。?您在哪里调用
部门\u-wise\u-Employee\u-Details.Show()
表单是否显示。。?请用对象显示第二个窗体的完整类定义。您是指插入窗体的控件吗?如果是,那么它就在那里。Show方法以另一种形式调用。基本上从主窗体转到欢迎窗体/主页,有一种叫做“显示”的方法,用于窗体部门\u wise\u Employee\u详细信息,还有您想要的窗体,我刚刚完全复制了。我建议加载一个数据表,而不是试图传递整个控件,然后将相同的数据表传递给第二个表单完全同意你刚才写的Steve..但是在所有这些之后,来自主表单的组合框数据不会显示在另一个表单中。