我的项目的主要形式是表格1。这实际上是搜索患者窗口。它有一个组合框,其中填充了数据库中现有患者的列表。这个组合框是用下面写的函数归档的。这个函数是从构造函数中调用的。
public void fillComboBox()
{
items.Clear();
items.Add("Select Name");
MainDataContext context = new MainDataContext(); //dotConnect Linq to sqlite
var query = from p in context.Patients
orderby p.Name ascending
select p;
foreach (Patient p in query)
{
items.Add(p.Name);
}
comboBox1.DataSource = items;
}
(工作正常)。items 的类型为“List<string>”。在创建每个新表单时,我都会传递 form1 的实例。喜欢
Form3 f3 = new Form3(this);
好的,在找到患者后,控件转到 Form3 以显示患者信息或根据需要进行编辑(工作正常)。然后转到 Form4 为婴儿构建成长图表(工作正常)。当我添加新患者时出现问题。控件通过按钮“新患者”从 Form1 转到 Form2。在 Form2 中,我添加了一个患者,然后转到 Form3 和 Form4(工作正常)。在我完成 Form4 后,使用此代码将控件转移到 Form1
Form1 f1;
public Form4(Form1 f1)
{
InitializeComponent(); //and etc
this.f1 = f1;
}
//...other functions etc
private void button4_Click(object sender, EventArgs e)
{
this.Close();
f1.Show();
}
但是 Form1 中的组合框没有更新。它包含相同的旧列表。但是当我像这样在 Form4 中创建一个新的 Form1
private void button4_Click(object sender, EventArgs e)
{
this.Close();
Form1 form1 = new Form1();
form1.Show();
}
然后它工作正常,但以这种方式。将显示 Form1 的一个实例,而另一个隐藏。并且如上所述,这个新的 Form1 将创建它的子 Forms (2,3,4)。我不想要这个,所以我回到以前的解决方案(转到 Form1 而不在 Form4 中创建新实例)。但这会导致组合框(在 Form1 中)中没有更新,当我关闭我的程序时,它会给出错误。
收藏已修改;枚举操作可能无法执行;
在 Form4 中也试过这个代码
private void button4_Click(object sender, EventArgs e)
{
this.Close();
f1.fillcombobox();
f1.Show();
}
我还尝试覆盖 Form1 的 onShown 和 onLoad 事件,但没有收获,只是痛苦和徒劳。然后我尝试了
应用程序.Restart();
在插入患者后的 Form2 中。这肯定帮助了我。但是会导致另一个问题。插入新患者后,控件转到我想转到 Form3 的 Form1。
请帮帮我。我知道这是一团糟,但您的帮助将不胜感激:)