【问题解决】无法创建新的堆栈防护页面

【问题发现】

      项目中需要几个自定义的控件,菜鸟D定义了一个接口,打算使用多态来统一调用。在完成两个自定义控件后,项目都能正常运行。但是在第三个控件使用的时候就出了问题:将控件拖到界面上以后,不能拖动改变控件的宽度,一拖动就会出现“无法创建新的堆栈防护页面”的提示,然后vs直接崩溃。后来经过多次尝试,发现可以输入改变控件的宽度,但是依然会有崩溃发生。

【问题解决】

      菜鸟D在网上搜索相关的解决办法,但是几乎所有的回答都在说是递归调用导致溢出。菜鸟D发现自己的程序中有递归的调用,但是前两个控件也是调用的这一个递归方法,如果是方法本身的问题,那两种控件也一定会出错,但事实是那两种控件可以正常使用的。所以问题一定就在新的自定义控件上。

      由于崩溃是在改变控件的宽度后发生的,必须看看宽度的属性,以下是部分代码:

public  int Width {get { return this.Width; }set { Width = value;
//此处自定义控件内部的控件的location的设置,如:lable1.location=new Piont(); //为了实现一个联动的效果
}
}

      这时菜鸟D注意到代码左侧的提示:

      Recursive call 不就是递归么!!!原来如此,是这里的递归导致了崩溃。删掉这段代码后,控件随意拖拉也再没出现那样的错误了。问题到此已经得到了解决。

【问题的分析】

      菜鸟D不明白为什么这么写会造成递归,于是开始接下来的查找。

     在get里面的Width上用F12,发现光标只是向上跳了一行,这个好像不对,感觉有点怪。随即想到既然这是自定义控件,继承Control控件类,控件类里面会不会做了相应的封装。于是,转到定义,以下代码展示继承关系:

public partial class ExControlBox : UserControl, IControlCommonablepublic class UserControl : ContainerControlpublic class ContainerControl : ScrollableControl, IContainerControlpublic class ScrollableControl : Control, IComponent, IDisposablepublic class Control : Component, IDropTarget, ISynchronizeInvoke, IWin32Window, IBindableComponent, IComponent, IDisposable
// Control基类中的两个属性
public int Width { get; set; }
public virtual string Text { get; set; }

      果然在Control基类里找到Width属性,当看到Text属性时想起曾经使用过override重写过Text属性,那是否可以换一种写法“重写”Width属性?当然可以——new。New 作为运算符用于创建对象和调用构造函数,作为修饰符用于隐藏基类中被继承的成员(出自msdn)。

于是改造了原来的Width属性的写法,也能成功运行没有发生崩溃。代码如下:

new public int Width{get { return base.Width; }set{base.Width = value;//此处自定义控件内部的控件的location的设置,如:lable1.location=new Piont(); //为了实现一个联动的效果
            }}

总结

1.在定义属性时,应注意是否该属性已经存在于基类,如果存在,就需要判断是需要重写该属性,还是隐藏该属性。

2.递归的调用一定要谨慎,否则可能造成溢出,导致崩溃。 

菜鸟D希望这篇文章对您有所帮助。

转载于:https://www.cnblogs.com/cnDqf/p/4083383.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java及python调用RabbitMQ

1,python调用MQ发送消息(生产者),话不多说,直接上干货 import pika 如下图 2.java调用MQ发送消息(生产者) 具体代码如下: python 的代码如下 connection pika.BlockingConnection(pika.ConnectionParameters(IP,端口,/))channel connection.channel()msg_props pika.Bas…

html知识收集(一)

1.页内跳转iframe <ul> <li><a href"1.html" target"iframe1">1</a></li> <li><a href"2.html" target"iframe1">2</a></li> </ul> </ul> <iframe name"i…

设定Word段落的背景色

段落背景不同于文字区别。很多新接触word的朋友都找不到怎么弄。 先把光标停留在需要设置的段落文字上&#xff0c;或者选择需要设置的段落文字。 点击段落里的边框和底纹&#xff0c;如图 在弹出框中选择底纹。 选择需要填充的颜色&#xff0c;在左下角处把文字切换成段落。…

Hadoop随笔(二)

文章目录[toc]2 Hadoop概念2.1 Hadoop简介2.2 MapReduce编程模型简介2.3 Hadoop系统的组成2 Hadoop概念 面对大数据量的处理需求&#xff0c;一个常用的方法就是把它们分割成互不依赖的小份数据来分别计算处理&#xff0c;这就是所谓的单指令多数据流(SIMD)的数据计算模式。Ha…

HDU 5102 The K-th Distance

题意&#xff1a;给你n-1条边&#xff0c;然后没两个节点的距离按照递增的顺序&#xff0c;求出前k项的和。 官方题解&#xff1a; 把所有边(u,v) 以及(v,u)放入一个队列&#xff0c;队列每弹出一个元素(u,v)&#xff0c;对于所有与u相邻的点w&#xff0c;如果w!v&#xff0c;就…

spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller

示例1&#xff1a;通过包路径及类名规则为应用增加切面 该示例是通过拦截所有com.dxz.web.aop包下的以Controller结尾的所有类的所有方法&#xff0c;在方法执行前后打印和记录日志到数据库。 新建一个springboot项目 1&#xff1a;首先定义maven <?xml version"1.0&q…

数据结构杂谈(二)

本文的所有代码均由C编写 如果你已经看完这篇杂谈&#xff0c;可以前往下一篇→数据结构杂谈&#xff08;三&#xff09;_尘鱼好美的小屋-CSDN博客 文章目录2 顺序表2.1 线性表的类型定义2.2 类C语言有关操作补充2.2.1 ElemType的解释2.2.2 数组定义2.2.3 建立链表可能会用到的…

2月份Web服务器份额:排名不变 仅Microsoft份额上扬

IDC评述网&#xff08;idcps.com&#xff09;02月29日报道&#xff1a;近日&#xff0c;Netcraft公布了全球Web服务器最新数据。根据显示&#xff0c;2016年2月&#xff0c;Netcraft收到调查的网站共计933,892,520家&#xff0c;相比上月增加3%。在全球主流Web服务器市场上&…

每日一题——剑指offer18单链表的删除

如果您是第一次看我写的博客&#xff0c;可以给我点个赞并关注我吗&#xff0c;我会持续分享更多有意思的干货。 每日一题系列从今天开始&#xff0c;由于我是个算法小白&#xff0c;所以我会给你看看小白是怎么学的。&#x1f487; 文章目录1 题目2 思路3 代码4 小结1 题目 剑…

王道操作系统考研笔记——1.1.1 操作系统的概念、功能和目标

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.1 操作系统的概念、功能和目标1.1.1.1 操作系统的概念1.1.1.2 作为系统资源的管理者1.1.1.3 作为用户和计算机硬件之间的接口1.1.1.4 作为最接近硬…

《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用

原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客计算机语言学习中都有常量和变量&#xff0c;他们几乎是我编写代码的灵魂了&#xff0c;离开他们我真的是“活不了”常量是标识符的前面加上关键字let。常量其值在使用过程中不会发生变化的量&#xff0c;下面…

王道操作系统考研笔记——1.1.2 操作系统的特征

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 1.1.2 操作系统的特征 文章目录1.1.2 操作系统的特征1.1.2.1 并发1.1.2.2 共享1.1.2.3 并发和共享的关系1.1.2.4 虚拟1.1.2.5 异步1.1.2.6 小结我们接下来讲的…

linux新起之秀-linux文件属性

2019独角兽企业重金招聘Python工程师标准>>> 从做到右&#xff1a;1为inode 的节点号&#xff1b;2为文件类型及权限&#xff1b;3为文件或目录的硬链接数&#xff1b;4为属主及所归属的组(属主就想象似地主&#xff0c;属组就像奴才的部分)&#xff1b;5为文件或者…

王道操作系统考研笔记——1.1.3 操作系统的发展及分类

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.3 操作系统的发展及分类1.1.3.1 手工操作阶段1.1.3.2 单道批处理系统1.1.3.3 多道批处理系统1.1.3.4 分时操作系统1.1.3.5 实时操作系统1.1.3.6 其…

iOS开发之如何将字典转为模型

2019独角兽企业重金招聘Python工程师标准>>> 刚刚学习了如何读取plist&#xff0c;将plist中的字典对象转成数组对象。字典和模型都可以存储数据&#xff0c;既然都可以存储对象&#xff0c;那么为什么要把plist中的字典转成模型呢&#xff1f; 字典 &#xff1a;通…

王道操作系统考研笔记——1.1.4 操作系统的运行机制和体系结构

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.4 操作系统的运行机制和体系结构1.1.4.1 两种指令、两种处理器状态、两种程序1.1.4.2 操作系统的内核1.1.4.3 操作系统的体系结构1.1.4.4 小结1.1…

How to remove replication in SyteLine V2

以前曾经写了一篇《How to remove replication in Syteline》http://www.cnblogs.com/insus/archive/2011/12/20/2294831.html 过于简单。 由于SyteLine采用共享License的授技术&#xff0c;如果你从一个正式的数据库复制一个备份&#xff0c;恢复至另外一个站点上&#xff0c…

【Keras】基于SegNet和U-Net的遥感图像语义分割

上两个月参加了个比赛&#xff0c;做的是对遥感高清图像做语义分割&#xff0c;美其名曰“天空之眼”。这两周数据挖掘课期末project我们组选的课题也是遥感图像的语义分割&#xff0c;所以刚好又把前段时间做的成果重新整理和加强了一下&#xff0c;故写了这篇文章&#xff0c…

每日一题——剑指 Offer24反转链表

如果您是第一次看我写的博客&#xff0c;可以给我点个赞并关注我吗&#xff0c;我会持续分享更多有意思的干货。 文章目录1 题目2 思路3 代码4 小结1 题目 剑指 Offer 24. 反转链表 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头…