2015-02-06 34 views
-1

尝试了一段时间在我的主要形式从组合框的数据传递给位于不同形式的组合框,即使我通过其他类似/相同的线程去我想不通为什么不希望以不同的形式显示。传递组合框不同的形式

主要形式:

​​3210

Department_wise_Employee_Details形式:

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

    public Department_wise_Employee_Details(ComboBox cb) 
    { 
     comboBox1 = cb; 
    } 
} 
+0

可以说明其他形式我假设你在细节的形式是什么构造仅是一个构造函数,你有一个空的构造,以及还你在详细信息表单中有一个comboBox1对象吗??你在哪里调用'Department_wise_Employee_Details.Show()'表单甚至显示..?请显示第二个表格的完整课程定义 – MethodMan 2015-02-06 21:59:47

+0

您的对象是指插入到表格中的控件?如果是,那么它就在那里。 Show方法在另一个表单中被调用。基本上从主窗体转到欢迎窗体/主页,并且窗体Department_wise_Employee_Details也被称为Show方法,也是您刚才完全复制的窗体。 – Gizzy 2015-02-06 22:11:31

+1

,而不是试图通过整体控制,我建议加载一个DataTable,然后传递相同的数据表为第二形态 – Steve 2015-02-06 22:19:52

回答

1

传递全局静态cb你的第二个表格可以工作,但你需要阅读这个通过组合的项目,并通过添加一个一个是在第二个表单中定义的组合框。

如果您只是重新分配第二个组合使用全局组合,则还需要将该组合添加到第二个窗体的控件集合(并且我不确定这里使用静态控件的副作用是什么) 。

也许最好的方法是通过传递共享数据并让Form引擎通过控件执行其平常的工作。在这种情况下,你加载一个DataTable与要共享的数据,并用它来设置两个组合的数据源属性。

例如

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; 
    } 
    .... 
} 
+0

所有绝对同意你刚才写的Steve..but仍然毕竟从主下拉框中数据表格不会显示在另一个表格中。 – Gizzy 2015-02-06 23:15:33

0

在这些场景中总是将数据传递给新形式不是控件。组合框都可以用类似数据表,表等数据源绑定容易