如何不UserControl.dispose()

Al *_*ath 1 c# winforms

我有一种情况,用户点击UserControl的X,如果存在某种条件,我想继续显示用户控件.我认为召唤base.Dispose(false)可以解决问题,但事实并非如此.我该怎么做呢?

FeatureView.Designer.cs

partial class FeatureView
{
    // User clicked the X on the control
    protected override void Dispose(bool disposing)
    {
        // Note: base.GetType() = FeatureView
        if (someCondition) // then dispose
        {
            base.Dispose(true);
        }
        else // keep displaying the Feature, do not dispose
        {
            base.Dispose(false);  // nope
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

FeatureView.cs

 public partial class FeatureView : System.Windows.Forms.UserControl
 {

 }
Run Code Online (Sandbox Code Playgroud)

小智 6

您的用户控件必须嵌入到可见的表单中.在lvel表单中,您可以捕获FormClosing事件并将cancel设置为true.

this.FormClosing += Form_ManageFavorites_FormClosing;

private void Form_ManageFavorites_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)