在我的父窗體中,我使用組合框填充項目,使用DataTable
作爲DataSource
,它看起來像這樣。當子窗體關閉時刷新組合框
sourceTypes = myDataBase.SourceType.ToList<SourceTypes>();
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("Name");
DataColumn dc2 = new DataColumn("ID");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
foreach (SourceType sourceType in sourceTypes)
{
string sourceTypeName = sourceType.sourceTypeName;
string ID = sourceType.sourceTypeID.ToString();
dt.Rows.Add(sourceTypeName, ID);
}
comboBox3.DataSource = dt;
comboBox3.ValueMember = "ID";
comboBox3.DisplayMember = "Name";
從我的父窗體我打電話給我的孩子形式,我的新記錄添加到myDataBase
,我想作爲子窗體關閉這個新添加的記錄,儘快在我父母的形式組合框可見。所以我想從我的childFrm中調用這樣的東西,它會刷新組合框。
private void FrmChild_FormClosed(object sender, FormClosedEventArgs e)
{
FrmParent.refresh();
}
現在我需要靜態刷新方法在我的父窗體中,我不能真正去工作。我怎麼能完成它?乾杯
編輯:子窗體在這裏隆重開幕:
private void button7_Click(object sender, EventArgs e)
{
FrmChild frmChild = new FrmChild();
frmChild.ShowDialog();
frmChild.Dispose();
}
EDIT2:我想是這樣的(沒有靜態方法),但沒有奏效
在我的孩子形式:
private void FrmChild_FormClosed(object sender, FormClosedEventArgs e)
{
FrmParent frmParent = new FrmParent();
frmParent.refresh();
}
在我的父窗體中,刷新方法(將新記錄添加到myDataBase之後)。
sourceTypes = myDataBase.SourceType.ToList<SourceTypes>();
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("Name");
DataColumn dc2 = new DataColumn("ID");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
foreach (SourceType sourceType in sourceTypes)
{
string sourceTypeName = sourceType.sourceTypeName;
string ID = sourceType.sourceTypeID.ToString();
dt.Rows.Add(sourceTypeName, ID);
}
comboBox3.DataSource = dt;
comboBox3.ValueMember = "ID";
comboBox3.DisplayMember = "Name";
試過這樣,combobox仍然沒有刷新。
如何子窗體打開/關閉?你使用模式彈出? – nmat 2013-04-21 22:25:31
你可以確認你的'refresh'方法在從父表單本身調用時是否正在工作?你有沒有理由讓它變成靜態的?如果您只是將其設置爲靜態,以便您可以從子窗體訪問它,那麼您不必這樣做,因爲您可以傳遞對窗體實例的引用。 – keyboardP 2013-04-21 22:39:00
@keyboardP是的,我使它靜態,所以我可以從我的孩子形式訪問它。我想這是更好的內存管理,然後每次關閉子窗體時創建新的parentForm對象。 – Whizzil 2013-04-21 22:44:07