我有一个带有位图的用户控件,应在窗体关闭时对其进行处理。 最好在表单的Closing事件,Closed事件或其他地方执行此操作?

第2部分:在用户控件内部,当其窗体关闭时,是否应该在Disposed事件中或其他地方放置位图?

===============>>#1 票数:3 已采纳

不,该表单与用户控件的私有成员无关。 通用.NET规则也适用于此,类需要在其自己的Dispose()方法中处置其成员。 表单关闭时它将自动运行,不需要任何帮助。

但是有一个怪癖,UserControl的项目项模板很尴尬。 它将Dispose()方法放入控件的Designer.cs文件中。 最好的办法是将此方法剪切+粘贴到控件的主源文件中。 在编辑方法之后,它应类似于以下内容:

    /// <summary> 
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing) {
        someBitmap.Dispose();             // <== added
        someOtherBitmap.Dispose();
        if (disposing && (components != null)) {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

有些程序员真的不喜欢修改Designer.cs文件,但请注意,由于代码在标记为Component Designer generated code的#region之外,因此无需担心。 另一种方法是使用Disposed事件:

    public UserControl1() {
        InitializeComponent();
        this.Disposed += UserControl1_Disposed;
    }

    void UserControl1_Disposed(object sender, EventArgs e) {
        someBitmap.Dispose();
        someOtherBitmap.Dispose();
    }

  ask by xpda translate from so

未解决问题?本站智能推荐:

5回复

如何重写用户控件上的事件

我有一个带有某些UserControl的WinForms应用程序(OwnerForm)。 当UserControl的文本框更改时,我想过滤OwnerForm的内容。 但是我该怎么做呢? 我不想在用户控件内指定OwnerForm。 我知道一种将MyUserControl.tb.
3回复

Winforms中的VB.Net UserControl关闭事件

我试图从DevExpress网格控件中保存一些布局,以便用户可以更改布局并在以后使用该控件时重新加载它们。 我的问题是速度问题,我正在通过表单内的用户控件加载控件。 现在,我的问题是,通过使该控件的一个实例显示在该选项卡组控件内部的面板控件中,然后将该控件的实例添加到选项卡组控件中,然后
4回复

winforms应用程序中的窗口关闭事件

我希望提示用户在winforms应用程序中关闭窗体窗口时保存数据。 如果单击表单右上角的红色框,我无法弄清楚如何触发用户提示。 我的应用程序当前有一个布尔标志,在textchanged事件上设置为True。 因此,我只需要检查红色框触发的任何事件中的布尔值。 有什么建议?
1回复

我可以从WebBrowser控件中的链接关闭Windows窗体吗?

好的,我的VB.NET应用程序中有一个WebBrowser控件,可在其中加载PHP页面。 在PHP页面上,我有一个“注销”超链接。 我想做的是单击该超链接时关闭VB.NET表单。 谁能告诉我如何做到这一点-甚至有可能吗?
1回复

为用户控件的子控件启用事件可见性?

介绍 我有一个继承自UserControl的类,在该类中我公开了一个子TextBox控件: 问题 我只是希望能够在设计时使用Handles语句,以使IntelliSense列出该子TextBox事件的方式,就像我们可以使用此功能列出和订阅默认TextBox的事件一样,如以下
1回复

将用户控件的代码从VB.NET转换为C#

我在VB.NET中有一个用于自定义用户控件的代码: 链接到代码 我使用这个网站将其转换为C#: http://www.carlosag.net/tools/codetranslator/ 转换后的结果是: 但是这段代码没有错误,其中一个是For Initializ
4回复

什么是最快的WinForms控件套件(商业)[关闭]

我的雇主希望销售“性感”应用程序,这意味着他们并不真正希望使用Windows的标准控件。 我这样做,因为表现更好,但是他们支付所以他们决定。 目前我正在使用最新版本的Telerik WinForms。 它们看起来都很棒,但表现非常令人失望...... Fe:我创建了一个简单的空Win
3回复

.net中的透明用户控件

我正在尝试使用用户控件制作一个Web样式按钮。 我需要使用户控件的背景透明。 如何在不使控件不可见的情况下执行此操作。 另外,我需要透明的Label和PictureBox。 试图做这样的事情:
2回复

在.net,winforms中显示用户控件后,我可以捕获的最后一个可能事件是什么?

正如标题所说,我正在寻找一个事件,以便在显示用户控件后捕获。 目前,我必须设置do-once变量并捕获Invalidated事件。
1回复

在Winforms用户控件中更改Dock属性

我正在尝试创建一个按钮,该按钮将隐藏停靠在用户控件中心的面板。 我的表单布局如下: 我有以下代码: 这在一定程度上起作用。 但是,当将bottomPanel设置为Fill时,它似乎可以填充整个控件,而不仅限于toolStrip1 。 谁能告诉我为什么会这样,以及如何纠正