C# 如何在UserControl中关闭窗体
我用按钮C# 如何在UserControl中关闭窗体,c#,winforms,user-controls,visual-c#-express-2010,C#,Winforms,User Controls,Visual C# Express 2010,我用按钮保存,关闭和取消创建了一个用户控件。我想在“取消”按钮上关闭表单而不保存,在“关闭”按钮上提示保存消息,在“保存”按钮上保存而不关闭。通常,我会在Cancel按钮上使用this.Close(),但是UserControl没有这样的选项。所以我想我必须为它设置一个属性 向下滚动“可能已经有你答案的问题”部分,我遇到了这个问题:我使用了以下C代码: 这在一个屏幕上就可以了,但是我想知道我是否必须在所有的屏幕上都应用这个代码?我认为应该有一个更有效的方法。因此,我的问题是:我是否需要将此代码应
保存
,关闭
和取消
创建了一个用户控件。我想在“取消”按钮上关闭表单而不保存,在“关闭”按钮上提示保存消息,在“保存”按钮上保存而不关闭。通常,我会在Cancel按钮上使用this.Close()
,但是UserControl没有这样的选项。所以我想我必须为它设置一个属性
向下滚动“可能已经有你答案的问题”
部分,我遇到了这个问题:我使用了以下C代码:
这在一个屏幕上就可以了,但是我想知道我是否必须在所有的屏幕上都应用这个代码?我认为应该有一个更有效的方法。因此,我的问题是:我是否需要将此代码应用于我拥有的每个表单,或者是否有其他(更有效的)方法?我找到了一个简单的答案:)我已经想到了类似的方法 要在UserControl内的
按钮单击事件中关闭WinForm,请使用以下代码:
private void btnCancel_Click(object sender, EventArgs e)
{
Form someForm = (Form)this.Parent;
someForm.Close();
}
你可以用
((Form)this.TopLevelControl).Close();
您可以使用可用于任何控件的FindForm方法:
private void btnCancel_Click(object sender, EventArgs e)
{
Form tmp = this.FindForm();
tmp.Close();
tmp.Dispose();
}
不要忘记处理表单以释放资源
希望这有帮助。您还可以使用远程线程关闭代码任何部分中的一个窗体:
MyNamespace.MyForm FormThread = (MyNamespace.MyForm)Application.OpenForms["MyForm"];
FormThread.Close();
这取决于usercontrol是否直接嵌入表单或其他子控件中。使用TopLevelControl应该使TrickControl不应该与它们的父控件发生冲突,而是引发一个事件。我的答案就是我使用它的目的(实际上,控件直接嵌入到表单中)。但我更喜欢你你帮了我的忙。非常感谢
MyNamespace.MyForm FormThread = (MyNamespace.MyForm)Application.OpenForms["MyForm"];
FormThread.Close();