为什么combox里面的不能显示
在A窗口插入数据库,然后更新B窗口的combox里的值
通过委托事件实现的
数据库里面的值可以取出来
我跟踪了一下也可以看到add进去了
但是最后显示不出来
请各位大大帮忙
谢谢了

解决方案 »

  1.   

    http://hi.baidu.com/kingboy_wrx/blog/item/44a3f41fed0bc367f624e488.html
      

  2.   


    //这是写的委托
    public class fjxxDelegagte{
          //声明委托 
            public delegate void FjxxEventHandler(); 
            public event FjxxEventHandler Fjxx; //声明事件 //          
            
            protected virtual void OnFjxx() 
            { if (Fjxx != null) 
            { // 如果有对象注册 
                Fjxx(); // 调用所有注册对象的方法 
            } 
            } 
            
            public void fjxxff() 
            { 
                
                                        
                        OnFjxx();                 
                 
            } 
        }  
        
        
        //B窗口
        
        fjxxDelegagte newfjxxDelegagte = new fjxxDelegagte();
                    DataEdit fDataEdit = new DataEdit();
                    newfjxxDelegagte.Fjxx +=fDataEdit.fGetType;
                    newfjxxDelegagte.fjxxff();
                    
                    
               //A窗口     
                     public  void fGetType()
            {
                myDataSet.Reset();
                OleDbConnection aConnection1 = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=fjxx.mdb");
                SQL = "";
                SQL = SQL + "select type from Categories";
                OleDbDataAdapter aCommand1 = new OleDbDataAdapter(SQL, aConnection1);
                aCommand1.Fill(myDataSet, "Categories");
                if (myDataSet.Tables[0].Rows.Count != 0)
                {
                    for (int i = 0; i < myDataSet.Tables[0].Rows.Count; i++)
                    {
                        
                        this.comboBox1.Items.Add(myDataSet.Tables[0].Rows[i][0].ToString());
                    }
                }
            }
    B窗口对数据库更新
    然后A窗口更新combox
      

  3.   

    各位大大帮我看看怎么回事
    为什么comobx不能显示出来
      

  4.   

    肯定更新不了,
    你看你这里的代码DataEdit fDataEdit = new DataEdit();
    其实你是NEW了一个A窗体的对象是吧,这样以来你更新窗体的对象跟你NEW的对象不是同一个对象。
    所以根本就没有办法更新了。
      

  5.   

    但是combox不能在静态函数里面调用吧
      

  6.   

    A窗口中:
    public B frmB;
    插入成功后:frmB.绑定();B窗口中:
    public void 绑定()
    {
    //绑定时先清空comboBox1.Items.clear()
    }
    打开A窗口时:
    A frmA = new A();
    frmA.frmB = this;
    frmA.show();
      

  7.   

    呵呵,你在定閱對象方式有點問題。即然是B觸發事件,A更新,
    那麽直接在A中定閱事件就行了,幹嘛寫在B中,再來直行A的方法,邏輯有點問題!
      

  8.   

    這樣
    事件 
    對象 A     
    A定閱事件obj1
    fjxxDelegagte obj=new fjxxDelegagte ();
    obj.Fjxx+=new FjxxEventHandler(update);private void update()
    {
    //更新combox
    }對象B
    fjxxDelegagte obj=new fjxxDelegagte();
    obj.fjxxff();
    大約這樣!!