回 帖 发 新 帖 刷新版面

主题:困扰我的两个C#问题


1,在控件,或者窗口都有这样的代码
private System.ComponentModel.Container components = null;

    protected override void Dispose( bool disposing )
    {
        if( disposing )
        {
            if( components != null )
                components.Dispose();
        }
        base.Dispose( disposing );
    }

但是这个 components似乎看不出来有什么作用,从名称上看我想它可能是一个是windows窗口(广义窗口,含控件),能够包含其他windows窗口的东西。希望高手解惑。

2,自定义控件
如何自定义控件?
我写了一个public class MDTIPercent : System.Windows.Forms.TextBox类
然后在某个窗口的代码上手动的加入它,这时候如果我切换到设计窗口(图形的),那个空间就会被删除。
可是如果我继承一个子窗口,而这个父窗口永远不切换到设计,则子窗口中有这个控件,且功能正常。
我想是我使用自定义控件的方法不对。
我知道VC中是利用 类和资源 来分别表示空间的内涵和外观从而实现自己的控件,那么
C#中是如何呢?在上面的情况中,我如何在切换到设计时使我的控件不消失?

谢谢高手解惑!!

回复列表 (共2个回复)

沙发

1、 components 组件,在你不是用组件的时候不会有变化,你拖个timer或其他组件进来,你会发现这个components 被实例化了
  dispose 方法继承IDisposable接口的类都要实现这个方法,作用是释放非托管的对象
2、自定义控件的问题,你肯定是少了给窗体加载的方法,所以窗体在初始的时候就把你的控件给丢了 this.controls.add()
   自定义控件确实容易丢失,建议在用设计视图前重新生成一遍
   也可以把你的控件放在工具箱中,使用的时候像使用系统的那样拖进来就不会出现这个问题了

板凳

谢谢yuhua

我来回复

您尚未登录,请登录后再回复。点此登录或注册