gpt4 book ai didi

c# - 将完整的子表单传递给另一个子表单

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:20 25 4
gpt4 key购买 nike

我看到很多页面和问题都涉及将值从一种形式传递到另一种形式。我想做一些不同的事情。不是值,而是整个表单,作为参数传递。请注意,这不是 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 创建它。单击父窗体的第二个按钮时,它会调用 ChildFormCreateEditor 之类的方法。当它创建编辑器时,它显然可以存储它以供以后交互。

如果父表单需要使用 Editor 做任何其他事情,它可以通过 ChildForm 来完成。

关于c# - 将完整的子表单传递给另一个子表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14159637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com