肯定更新不了, 你看你这里的代码DataEdit fDataEdit = new DataEdit(); 其实你是NEW了一个A窗体的对象是吧,这样以来你更新窗体的对象跟你NEW的对象不是同一个对象。 所以根本就没有办法更新了。
但是combox不能在静态函数里面调用吧
A窗口中: public B frmB; 插入成功后:frmB.绑定();B窗口中: public void 绑定() { //绑定时先清空comboBox1.Items.clear() } 打开A窗口时: A frmA = new A(); frmA.frmB = this; frmA.show();
//这是写的委托
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
为什么comobx不能显示出来
你看你这里的代码DataEdit fDataEdit = new DataEdit();
其实你是NEW了一个A窗体的对象是吧,这样以来你更新窗体的对象跟你NEW的对象不是同一个对象。
所以根本就没有办法更新了。
public B frmB;
插入成功后:frmB.绑定();B窗口中:
public void 绑定()
{
//绑定时先清空comboBox1.Items.clear()
}
打开A窗口时:
A frmA = new A();
frmA.frmB = this;
frmA.show();
那麽直接在A中定閱事件就行了,幹嘛寫在B中,再來直行A的方法,邏輯有點問題!
事件
對象 A
A定閱事件obj1
fjxxDelegagte obj=new fjxxDelegagte ();
obj.Fjxx+=new FjxxEventHandler(update);private void update()
{
//更新combox
}對象B
fjxxDelegagte obj=new fjxxDelegagte();
obj.fjxxff();
大約這樣!!