我想开发一个Windows窗体应用程序。在父窗口中,将使用一个按钮来创建和显示子窗口窗体。当我关闭父窗口时,子窗口也会自动关闭。但是当我关闭父窗口时,我不想关闭子窗口。因此,我希望父窗口将关闭,但子窗口将保持激活状态。
在父窗口中:
private void button1_click (object sender, EventArgs e)
{
childwindow c=new childwindow();
c.show();
}
然后当我关闭父窗口时,子窗口也关闭了。
答案 0 :(得分:1)
将方法连接到主窗体的FormClosing事件。 (您要关闭但不会导致应用程序退出的那个)
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
}
这将取消关闭事件,然后隐藏主窗体。 您现在需要自己处理应用程序的关闭。
答案 1 :(得分:0)
根据您拥有的所有名称,您应该能够隐藏"你的窗口。这样称呼:
Form.Hide();
答案 2 :(得分:0)
您可以在Application.Run()外部启动父窗口,这样它就可以关闭,子窗口将保持打开状态。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var parentWindow = new ParentWindow();
parentWindow.Show();
Application.Run(); // Not application run without specific form
}
但是,您需要使用某种标志来终止应用程序,例如,如果孩子没有打开和/或关闭Child,并且只关闭孩子,那么父母将不会被关闭:
在父母:
public static int i = 1;
private void button1_Click(object sender, EventArgs e)
{
var childForm = new ChildWindow();
childForm.Show();
}
private void Parent_FormClosing(object sender, FormClosingEventArgs e)
{
if (i==1 || i==4)
{
Application.Exit();
}
if (i == 2)
{
ChildWindow.i= 3;
}
}
在孩子身上:
public static int i=2;
public ChildWindow()
{
InitializeComponent();
ParentWindow.i=2;
}
private void Child_FormClosing(object sender, FormClosingEventArgs e)
{
if (i==3)
{
Application.Exit();
}
ParentWindow.i = 4;
}