使用2 DialogForm删除数据

嗨我有问题从2表格对话框中删除数据
在第一个dialogform中它包含数据列表,在第二个dialogform中它包含数据的详细信息和删除按钮…我已经成功删除了数据库中的数据,但我很困惑如何从列表中删除数据…

如果只是选择数据并删除,我知道可以使用此代码完成

quizzes.RemoveAt(listBoxQuizzes.SelectedIndex); 

但是这里的dialogform1问题不可用按钮删除,只是查看详细信息数据。 所以如果用户想删除数据,他必须打开dialogform2(详细数据)我已经用这段代码删除了数据库中的数据

 Global.deleteData("DELETE FROM Quiz_Occurrences WHERE ID = " + id); 

并关闭detaildataform(dialogform2)

 this.Close(); 

并转到dialogform1(listdatabox)这里的问题,我刚刚删除的数据因为它还没有删除(已经从数据库删除但没有从列表中删除) 。 并需要重新启动程序以查看删除数据的效果


更新进度

我将数据更改为全局变量,因此技术上我可以删除dialogform2中的数据
这是代码(dialogform1中的修饰符列表框)

  int no = 1; foreach (CQuizOccurrence myQuizOccurrence in Global.quizOccurrences) { } 

如果我想从dialogform1中删除它,我可以使用

 Global.quizOccurrences.removeAT(listBoxQuizzes.SelectedIndex); 

但如果我想从dialogform2中删除它

 Global.quizOccurrences.removeAT(.........); //still not have idea how can i reference index 

从@nitin 更新解决方案

所以首先我写在formdialog2

 public Frmdialog1 frm_dialog { get; set; } 

然后我在formdialog1中写这个

 frmdialog2.frm_dialog=this; 

然后再回到formdialog1来写

 frm_dialog.quizzes.RemoveAt(frm_dialog.listBoxQuizzes.SelectedIndex); 

是的,因为我得到了很多错误

如果你从第一个开始第二个对话框你可以拥有Frmdialog2属性

  public Frmdialog1 frm_dialog { get; set; } 

Frmdialog2中创建Frmdialog2对象后,您可以将此属性设置为

 frmdialog2.frm_dialog=this; 

现在你可以在删除数据库中的记录之后从Frmdialog2 iteself中的这个列表框中删除项目

  frm_dialog.quizzes.RemoveAt(frm_dialog.listBoxQuizzes.SelectedIndex); 

注意: listbox修饰符应该是public

在找到关于这个主题的许多不同问题之后,我终于能够按照自己的意愿去做
首先我尝试将var更改为全局,所以我可以从dialogform2中删除listbox dialogform1中的数据(我认为这是最简单的方法)

 //in dialog form1 foreach (CQuizOccurrence myQuizOccurrence in Global.quizOccurrences) { //load data from Global.quizOccurences } //call function close to close dialogform1 

然后在dialogform2中,将Global.quizOccurrences数据与日期和时间明细数据相匹配(使用list&foreach)

  List matchData = new List(); foreach (CQuizOccurrence myQuizOccurrence in Global.quizOccurrences) { DateTime dtDatabase = (DateTime)myQuizOccurrence.occurred; string dt = dtDatabase.ToString(); if (dt == dateOccur) { matchData.Add(myQuizOccurrence); } } foreach (CQuizOccurrence myQuizOccurrence in matchData) { Global.quizOccurrences.Remove(myQuizOccurrence); } //call function show dialog for formdialog1 

form1可以接受form2的close事件。

在form1中

 form2 f2dialog = new form2(/*I guess you are passing data here*/); f2.dialog.Closing += eventhandler; 

别的地方

 void eventhandler(object sender, eventargs e) { //refresh globaldata since by now you have ran delete query //rebind or call listbox.items.refresh() or both <-------------this how do you get data from rver? the server is updated but does global know that? } 

然后你需要调用代码再次从数据库中获取数据。 并重新绑定到数据

 listbox.datacontext = Global.GetData();//or however this is done 

您必须手动重置此更改数据库的eveerytime

数据绑定并不像你想象的那么聪明。