我看到很多页面和问题都涉及将值从一种形式传递到另一种形式。我想做一些不同的事情。不是值,而是整个表单,作为参数传递。请注意,这不是 MDI 表格。
我有一个带有 2 个按钮的父表单。一个按钮创建一个 Child1 表单等等。另一个(可选)按钮调用不同的子表单编辑器。
第一个按钮是一个验证按钮,如果有效,它会弹出 Child1 表单,其中包含一个包含键/值对的 ListView 框。 第二个是带有自己按钮的编辑器。如果其中一个(提交)按钮被按下,那么第一个 Child1 表单应该更新为一个新的键值对。
我一直遇到的问题是我似乎无法让 Child1 表单反射(reflect)更改。我不知道更新此 Child1 表单的最佳方法是什么。我已经尝试使用 EndUpdate 和 BeginUpdate,并刷新它,现在经过所有尝试,我有点迷路了。我希望有人能帮助我。
我真正想做的是刷新 ChildForm1,假设它是一个收件箱,当从第二个子窗体编辑器“保存”或添加某些内容时。在第二个子窗体编辑器中单击按钮,第一个子窗体应该刷新。
父表单:
public ChildForm1 MyboxofValues;
private void btn1_Click(object sender, EventArgs e)
{
MyboxofValues = new ChildForm1();
MyboxofValues.Show();
}
private void btn2_Click(object sender, EventArgs e)
{
Editor myEditor = new Editor();
myEditor.Show();
}
子窗体 1:
public ChildForm1()
{
InitializeComponent();
updateMe();
}
public void updateMe()
{
listView1.Items.Clear();
if (MainCode.subRows.Count > 0)
{
foreach (KeyValuePair<string, string> element in MainCode.subRows)
{
ListViewItem lvi = new ListViewItem(element.Value);
lvi.SubItems.Add(element.Key);
listView1.Items.Add(lvi);
}
}
}
编辑器表单:
private ChildForm1 originalForm = new ChildForm1();
private void btnSubmit_Click(object sender, EventArgs e)
{
originalForm.updateMe();
}
我确定这很容易,但我做不到。如果有人可以提供帮助,将不胜感激,节省我的时间!如果有更好的方法来更新提交结果也可以,请举例说明?
出于测试目的,我为 ChildForm1 创建了一个“刷新”按钮,它起作用了! (它实际上只是调用了 updateMe()。所以我认为我正在创建一个新的表单实例并尝试更改这个不存在的(空)表单而不是实际的 ChildForm1。但我想刷新 listviewBox来自编辑器表单。
最佳答案
与其让 Editor
成为父表单的“子”表单,不如让它成为 ChildForm
的子表单(也就是父表单的孙子表单)。当然,由于您没有使用 MDI,这只是解决问题的一种合乎逻辑的方法,仅此而已。
与其让父级创建 Editor
,不如让 ChildForm
创建它。单击父窗体的第二个按钮时,它会调用 ChildForm
的 CreateEditor
之类的方法。当它创建编辑器时,它显然可以存储它以供以后交互。
如果父表单需要使用 Editor
做任何其他事情,它可以通过 ChildForm
来完成。
关于c# - 将完整的子表单传递给另一个子表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14159637/