任何人都可以幫助我解決以下問題嗎? : 我在我的winform應用程序中有兩種形式。在form1中,我有一個按鈕來打開form2。 在窗口2,我有一個列表框從XML得到他的項目:以其他形式更新控制
private void FillListBox()
{
string filename = @"employee.xml";
XmlDocument doc = new XmlDocument();
doc.Load(filename);
XmlNodeList xnList = doc.SelectNodes("/Information/username");
foreach (XmlNode xn in xnList)
{
ListboxUsername.Items.Add(xn.InnerText);
}
}
在Form1,我有一個組合框也從同一個XML文件中獲取自己的項目:
public void FillCombobox()
{
comboboxPersonen.Items.Clear();
string filename = @"emplyee.xml";
XmlDocument doc = new XmlDocument();
doc.Load(filename);
XmlNodeList xnList = doc.SelectNodes("/Information/username");
foreach (XmlNode xn in xnList)
{
comboboxUsername.Items.Add(xn.InnerText);
}
}
在窗口2我是能夠編輯listboxUsername中的xmlnodelist。而當關閉form2時,我想要在comboboxUsername中最近的項目。就像在asp.net中回發一樣,但在winform應用程序中。有什麼建議麼?
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
//acces comboboxusername in form1 to update it with recent xml list items
}
感謝您的時間。
您是否在關閉Form2之前將編輯後的xml保留迴文件中?如果您可以從Form2中觸發Form1可以處理的事件,那麼您將從文件中重新加載Form1的組合框。如果沒有,您可以在自定義EventArg中傳遞更新的XmlNodeList,並讓Form1從傳遞的XmlNodeList中重新加載組合框。 – Kevin
是的,在關閉Form2之前編輯hame。我應該開火什麼樣的事件以及如何在Form1中接收它? – user3114347
您可以考慮查看http://stackoverflow.com/questions/31190976/how-do-i-update-a-child-form-from-another-child-form/31191633#31191633並瀏覽我周圍的答案。總的答案是「也許你不想直接這樣做,因爲可能需要集中的方法」,但我們也都會談及如何更直接地做到這一點。在下面,Dan也許是你需要的東西,但是你可能錯過了一些事物可能嵌套在父容器中(或者是多層)。您可能需要檢查迭代的項目是否具有子容器項目。 –