如何在UserControl中关闭表单

FJP*_*ort 3 c# user-controls winforms visual-c#-express-2010

我创建了按钮的用户控件Save,CloseCancel.我想关闭表单而不保存取消按钮,提示消息保存在关闭按钮上,保存而不关闭保存按钮.通常,我会使用this.Close()取消按钮,但UserControl没有这样的选项.所以我想我必须为此设置一个属性.

向下滚动该"Questions that may already have your answer"部分,我遇到了这个问题:如何从其中加载的UserControl按钮关闭ChildWindow?我使用了以下C#代码:

private void btnCancel_Click(object sender, EventArgs e)
{
    ProjectInfo infoScreen = (ProjectInfo)this.Parent;
    infoScreen.Close();
}
Run Code Online (Sandbox Code Playgroud)

这可以完成一个屏幕的工作,但我想知道是否必须为我拥有的所有屏幕应用此代码?我认为应该有一种更有效的方式.所以我的问题是:我是否需要为我拥有的每种表单应用此代码,还是有另一种(更有效)的方式?

Tob*_*bon 17

您可以使用

((Form)this.TopLevelControl).Close();
Run Code Online (Sandbox Code Playgroud)


Lio*_*l D 5

您可以使用适用于任何控件的 FindForm 方法:

private void btnCancel_Click(object sender, EventArgs e)
{
    Form tmp = this.FindForm();
    tmp.Close();
    tmp.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

不要忘记 Dispose 表单来释放资源。

希望这可以帮助。