gpt4 book ai didi

c# - 从子窗体导航到其同级窗体

转载 作者:行者123 更新时间:2023-11-30 17:14:20 26 4
gpt4 key购买 nike

在父表单 A 中,有以下代码调用子表单“B”:

        Window frmChildB;
frmChildB = new FormB();
frmChildB.ShowDialog();

在同一个窗体中:调用子窗体“C”的代码如下:

        Window frmChildC;
frmChildC = new FormC();
frmChildC.ShowDialog();

现在我想在表单 B 中制作一个按钮,这样如果我单击该按钮,它会自动导航到表单 C。

在这个 question 的答案中,在表单 B 中使用表单 C 的引用对象应尽可能避免。原因是有十多个表单,如 B、C...,并且每个表单都必须能够导航到另一个表单。在一个表单中包含 10 个表单引用对象并不好。

我想一定有什么方法可以达到这个效果。有人知道吗?

最佳答案

如果我对您的问题的理解正确,您希望每个表单都有一个实例,并在它们之间来回导航。

如果这是您想要的,您可以实现一个静态 FormManager 类,它创建表单的实例并根据需要显示它们。您甚至可以使用枚举来进一步降低复杂性。

这是这个类的一个例子(它需要一些额外的工作,但应该给你一个好主意):

public class FormManager
{
private static FormB m_FormB;
public static FormB formB
{
get
{
if (m_FormB == null)
{
m_FormB = new FormB();
}
return m_FormB;
}
}
private static FormC m_FormC;
puClic static FormC formC
{
get
{
if (m_FormC == null)
{
m_FormC = new FormC();
}
return m_FormC;
}
}

public enum FormId
{
FormB,
FormC
}

public static Form ShowForm(FormId whichForm)
{
Form oForm;

switch (whichForm)
{
case FormId.FormB:
oForm = FormManager.formB;
break;

case FormId.FormC:
oForm = FormManager.formC;
break;

default:
oForm = null;
break;
}

if (oForm != null)
{
oForm.ShowDialog();
}
return oForm;
}
}

这可以从子表单中调用为:

FormManager.ShowForm(FormManager.FormId.FormB);

关于c# - 从子窗体导航到其同级窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875299/

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