ISupportInitialize.BeginInit()的问题

  今天碰到了一个关于ISupportInitialize.BeginInit()的问题,在winform界面中用到了一个datagridview控件,但是后来由于需要添加分页的逻辑,就在datagridview上封装了一层,变成控件dataGridViewPage,然后直接在设计器中把DataGridView替换成DataGridViewPage,结果编译没有问题,但是运行的时候出现错误,异常为无法将类型为“DataGridViewPage”的对象强制转换为类型“System.ComponentModel.ISupportInitialize”,后来发现是因为封装以后的控件没有继承ISupportInitialize接口,所以就去MSDN看了一下ISupportInitialize接口的用处,ISupportInitialize接口下有两个方法BeginInit()和EndInit(),主要的作用是在设计器中控制控件的设置顺序,继承ISupportInitialize接口的控件在设计器中设置的顺序是BeginInit()—>用户自己的设置—>EndInit(),而中间的环节是使用控件的用户可以自己设置的,所以我们的控件如果必须在属性设置最后或最开始执行某些设置的时候,需要继承ISupportInitialize接口,把需要设置的属性放到BeginInit()或EndInit()里就可以了。

posted on 2016-04-28 20:49  SauronKing 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/sauronKing/p/5444199.html

很不错的C#源码,实用,分也不多. using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace NoticePad { /// /// 定时提醒的小工具。 /// public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Timer timer1; private System.Windows.Forms.NumericUpDown ndHour; private System.Windows.Forms.NumericUpDown ndMinute; private System.Windows.Forms.Button btn_OK; private System.ComponentModel.IContainer components; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /// /// 清理所有正在使用的资源。 /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.ndHour = new System.Windows.Forms.NumericUpDown(); this.ndMinute = new System.Windows.Forms.NumericUpDown(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.textBox1 = new System.Windows.Forms.TextBox(); this.btn_OK = new System.Windows.Forms.Button(); this.timer1 = new System.Windows.Forms.Timer(this.components); ((System.ComponentModel.ISupportInitialize)(this.ndHour)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.ndMinute)).BeginInit(); this.SuspendLayout(); // // ndHour // this.ndHour.Location = new System.Drawing.Point(8, 8); this.ndHour.Maximum = new System.Decimal(new int[] {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值