ISupportInitialize接口的用处

我最近才发现ISupportInitialize这个接口。在开发复杂一点的winform控件的时候它实在是很有用。

MSDN上有对ISupportInitialize的介绍,我这里只说一下在什么情况下用它发挥作用。
问题

我要做一个比较复杂的控件“OpenGLControl”,它能够在winform程序中执行opengl命令,渲染出3D场景。这个控件有一些相关的属性,在设计器里,这些属性是这样写(自动生成)的:

//
 // openGLControl1
 //
 this.openGLControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                 | System.Windows.Forms.AnchorStyles.Left)
                 | System.Windows.Forms.AnchorStyles.Right)));
 this.openGLControl1.BitDepth = 32;
 this.openGLControl1.DrawRenderTime = true;
 this.openGLControl1.FrameRate = 29.41176F;
 this.openGLControl1.Location = new System.Drawing.Point(12, 12);
 this.openGLControl1.Name = "openGLControl1";
 this.openGLControl1.RenderContextType = SharpGL.RenderContextType.NativeWindow;
 this.openGLControl1.Size = new System.Drawing.Size(768, 379);
 this.openGLControl1.TabIndex = 0;
 this.openGLControl1.OpenGLDraw += new System.Windows.Forms.PaintEventHandler(this.openGLControl1_OpenGLDraw);

于是问题来了。

BitDepth,OpenGLDraw,FrameRate等等必须在Size这个属性之前设置好。这我们怎么控制?这种自动生成的代码天晓得我们怎么去管它。

于是ISupportInitialize接口出场了。如果OpenGLControl实现了这个接口,那么在设计器里自动生成的代码就会是这样的:

private void InitializeComponent()
 {
     System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormExample1));
     this.label1 = new System.Windows.Forms.Label();
     this.linkLabel1 = new System.Windows.Forms.LinkLabel();
     this.openGLControl1 = new SharpGL.OpenGLControl();
     ((System.ComponentModel.ISupportInitialize)(this.openGLControl1)).BeginInit();
     this.SuspendLayout();
     //
     //  ...ordianry designer code...
     //
     ((System.ComponentModel.ISupportInitialize)(this.openGLControl1)).EndInit();
     this.ResumeLayout(false);
     this.PerformLayout();
 }

好了。想让Size属性最后设置是吧,好说啊,在EndInit方法里设置它就好了。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索windows
, this
, 属性
, forms
, system
, 自动生成
, opengl sharpgl
, 引用控件失效c#sharpgl
SharpGL
isupportinitialize、接口的用处、hdmi接口用处、车棉衣的用处、阿里云对普通人的用处,以便于您获取更多的相关知识。

时间: 2024-10-02 22:18:36

ISupportInitialize接口的用处的相关文章

new-关于接口的理解,还有哪些不足的地方。。

问题描述 关于接口的理解,还有哪些不足的地方.. 是这样,楼主本人刚学Java的时候,看到抽象类与接口,感觉很不理解,时常为两者的业务场景纠缠不清. 后来在网上百度,七嘴八舌,要么只是说一些语法上的不同,要么就是提一些不痛不痒的例子,比如什么学生类,老师类实现人的某项功能balabala... 其实我个人觉得刚开始还是从代码层面上说话更能让人理解. 关于抽象类,在实际应用中我更喜欢把它当做"模板"来使用,抽象类的好处就是,一半事情,父类替你做了,OK,子类直接调取:另一半事情留给子类自

连载:面向对象葵花宝典:思想、技巧与实践(8) - “接口” 详解

"接口"是我见过的面向对象领域中滥用.乱用.误用最多的术语: 有的人说:兄弟,给我提供一个"查询XXX"的接口...... 有的人说:系统对外提供了"查询"."插入"."更新"."删除"4个接口...... 有的人说:我们要基于"接口"编程...... 有的人说:你这样做破坏了我们的接口设计...... ........... 倒不是在这里指责他们的水平有多差,而是接

java学习 java中接口运用演示并行开发.....暑假第五天

接口在并行开发中有着重要作用        下面演示接口的例子      模拟显卡  工作   显卡应该有显示功能 和获得厂家名称的功能 interface  VideoCard  { void Display(); void GetName(); }:   下面实现Deming显卡 ,我们通过一个类来实现 上述接口 并且在类中添加自己的特性  因为显卡的厂家不同所以 实例化的类就不同    对于生产厂商只需要满足标准接口就行了 对于谁生产 都无所谓    这就是接口的用处  我们是利用 Dem

.NET组件控件实例编程系列——3.DataGridView列标题可编辑组件

在上一篇中介绍了用Label控件模拟网页链接的组件,实现原理只是简单的将Label控件的事件进行了 处理.本篇中介绍的DataGridView列标题可编辑组件在对DataGridView控件的事件进行处理的同时,加入 了更多的技巧. 首先介绍本示例要实现的效果.WinForm中的DataGridView控件只能对单元格进行编辑,但有时候需要 对列标题进行编辑,即自定义列标题.本组件就是实现列标题编辑的功能,双击列标题即可进行编辑,支 持键盘左右键移动编辑单元格.编辑效果如下图.(注:双击列标题对

解决重写父类的方法且不会影响继承的子类的问题

解决重写父类的方法且不会影响继承的子类的问题 基类的方法被所有继承的子类继承,是不应该被修改的,如果继承的子类重写了基类的方法,那么,再从这个子类派生出子类的话,这个派生的子类接口已经破坏掉了统一的接口. 但有时候,我们需要一个子类能扩展基类的方法,但又不想破坏这个统一的接口,这时候,哥就来教你既能扩展功能,又能保证接口的统一性:) 首先做几个实验验证: 提供的源码如下: A类  B类  C类  (B类继承于A类,C类继承于B类) // // A.h // Super // // Copyrig

怎么实现桌面3D旋转(WPF)-100分

问题描述 1.实现桌面3D旋转的原理是什么?2.WPF能否实现这样的功能?能实现的话具体怎么实现?请高手帮忙,谢谢!!!!!!!!!!! 解决方案 解决方案二:屏保?解决方案三:我说的不是频保,类似于市面上的DeskSpace等软件的功能.谢谢各位帮顶一下!!!!!!解决方案四:可以实现的.就是用到了一些图形的旋转,缩放等功能,建议找本gdi+看看.如果效果不是要求特别高.应该没有什么难度的解决方案五:谢谢,希望继续帮顶一下解决方案六:UP解决方案七:GDI+可以实现3D旋转?解决方案八:用WP

做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处

做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处 interface Animal{             //动物的接口    public void eat(Food food); //接口中只有抽象的方法和静态常量!这里void前面省略了abstract.同样,变量可以省略static final} class Cat implements Animal //一种动物类:猫  {      public void eat(Food food) //这里是对

[Js/Jquery]天气接口简单使用

写在前面 今天在群里有朋友使用一个天气api,觉得挺实用的,就记录一下.省的以后再花费功夫去找. 地址:http://www.k780.com/api,在这个网站提供了实用的几种接口,比如查询ip,天气,身份证等信息. 参数介绍 一个例子 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Conten

详解阿里妈妈淘客系统对外接口通用规范

<阿里妈妈淘客系统对外接口通用规范>(以下简称"淘客规范")其实写的还是比较详尽的,只是在具体描述上不够连贯,才造成了大家的误解. 一.对于"淘客规范"2.4中的说明相信大家应该比较容易理解 http://taoke.alimama.com/rpc/ searchAuctionByRpc.do?pw=XXXXXX 返回结果: cat_id,parent_id,cat_name 16,0,女装/女士精品 30,0,男装 3415,34,音乐CD/DVD 1