Windows 窗体设计器中的设计时错误
- public class MyClass : System.WIndows.Forms.Form
- {
- public MyClass(string fileName)
- {
- InitializeComponent();
- FileStream myFile = File.Open( filename ); // 窗体设计器可能抛出异常!
- //…
- }
- //…
- }
public class MyClass : System.WIndows.Forms.Form { public MyClass(string fileName) { InitializeComponent(); FileStream myFile = File.Open( filename ); // 窗体设计器可能抛出异常! //… } //… }
这是让人一眼看过去就觉得最直接最有效的方法,绝对有一种踏破铁蹄无觅处,得来全不费功夫的欣快感——可惜的是,用起来一点不奏效。因为如果该窗体是个独立窗体或控件,那一点问题都没有,DesignMode的值如你所愿为true,但是如果它是包含在其他控件中被拖拽到设计器中(例如,把设计好的控件拖入新的WinForms窗体),那么那个接受拖拽的窗体才处于设计模式,而它不是,它已鬼使神差地进入了RunTime模式,然后如我所愿,抛出异常J。
此方法我认为最好。具体做法是写一个全局类,也就是构造函数为 private 限制的类,里面的成员都为static静态类型。这样的一个类由于构造函数是私有的,所以不可能自任何地方任何外部代码中实例化,从而保证了其内成员的唯一性。然后,在程序的入口处,把此类的一个用于表示运行模式的静态成员标识为“运行时”,下面….一切都好说了,看代码吧:
- //全局类
- public class GlobalClass
- {
- //私有构造器,防止实例化
- private GlobalClass(){}
- //用于标识运行时/设计时的bool型静态成员,初始值设为false
- public static bool RunTimeMode = false;
- }
- //包含程序入口的类
- Public class Entry
- {
- …
- //主线程入口点,窗体设计器绝不会执行此方法
- static void Main(string[] args)
- {
- //置为true
- GlobalClass.RunTimeMode = true;
- //…..
- }
- //…
- }
- //某个窗体类
- public class MyForm : System.Windows.Forms.Form
- {
- public MyForm()
- {
- //窗体设计器必须调用的
- InitializeComponent();
- //判断运行模式
- If( GlobalClass.RunTimeMode )
- {
- //在此处做一些窗体设计器会报错的事情
- }
- //…
- }
- //…
- }
//全局类 public class GlobalClass { //私有构造器,防止实例化 private GlobalClass(){} //用于标识运行时/设计时的bool型静态成员,初始值设为false public static bool RunTimeMode = false; } //包含程序入口的类 Public class Entry { … //主线程入口点,窗体设计器绝不会执行此方法 static void Main(string[] args) { //置为true GlobalClass.RunTimeMode = true; //….. } //… } //某个窗体类 public class MyForm : System.Windows.Forms.Form { public MyForm() { //窗体设计器必须调用的 InitializeComponent(); //判断运行模式 If( GlobalClass.RunTimeMode ) { //在此处做一些窗体设计器会报错的事情 } //… } //… } 呵呵,问题圆满解决。其实这样一个全局类在我们平时设计系统的时候会经常用到,多用于存储一些对象间的交互数据或者运行时环境参数。
转载自:http://blog.csdn.net/uyi/archive/2006/03/18/628694.aspx
print?
- public class MyClass : System.WIndows.Forms.Form
- {
- public MyClass(string fileName)
- {
- InitializeComponent();
- FileStream myFile = File.Open( filename ); // 窗体设计器可能抛出异常!
- //…
- }
- //…
- }
public class MyClass : System.WIndows.Forms.Form { public MyClass(string fileName) { InitializeComponent(); FileStream myFile = File.Open( filename ); // 窗体设计器可能抛出异常! //… } //… }
这是让人一眼看过去就觉得最直接最有效的方法,绝对有一种踏破铁蹄无觅处,得来全不费功夫的欣快感——可惜的是,用起来一点不奏效。因为如果该窗体是个独立窗体或控件,那一点问题都没有,DesignMode的值如你所愿为true,但是如果它是包含在其他控件中被拖拽到设计器中(例如,把设计好的控件拖入新的WinForms窗体),那么那个接受拖拽的窗体才处于设计模式,而它不是,它已鬼使神差地进入了RunTime模式,然后如我所愿,抛出异常J。
此方法我认为最好。具体做法是写一个全局类,也就是构造函数为 private 限制的类,里面的成员都为static静态类型。这样的一个类由于构造函数是私有的,所以不可能自任何地方任何外部代码中实例化,从而保证了其内成员的唯一性。然后,在程序的入口处,把此类的一个用于表示运行模式的静态成员标识为“运行时”,下面….一切都好说了,看代码吧:
- //全局类
- public class GlobalClass
- {
- //私有构造器,防止实例化
- private GlobalClass(){}
- //用于标识运行时/设计时的bool型静态成员,初始值设为false
- public static bool RunTimeMode = false;
- }
- //包含程序入口的类
- Public class Entry
- {
- …
- //主线程入口点,窗体设计器绝不会执行此方法
- static void Main(string[] args)
- {
- //置为true
- GlobalClass.RunTimeMode = true;
- //…..
- }
- //…
- }
- //某个窗体类
- public class MyForm : System.Windows.Forms.Form
- {
- public MyForm()
- {
- //窗体设计器必须调用的
- InitializeComponent();
- //判断运行模式
- If( GlobalClass.RunTimeMode )
- {
- //在此处做一些窗体设计器会报错的事情
- }
- //…
- }
- //…
- }
//全局类 public class GlobalClass { //私有构造器,防止实例化 private GlobalClass(){} //用于标识运行时/设计时的bool型静态成员,初始值设为false public static bool RunTimeMode = false; } //包含程序入口的类 Public class Entry { … //主线程入口点,窗体设计器绝不会执行此方法 static void Main(string[] args) { //置为true GlobalClass.RunTimeMode = true; //….. } //… } //某个窗体类 public class MyForm : System.Windows.Forms.Form { public MyForm() { //窗体设计器必须调用的 InitializeComponent(); //判断运行模式 If( GlobalClass.RunTimeMode ) { //在此处做一些窗体设计器会报错的事情 } //… } //… } 呵呵,问题圆满解决。其实这样一个全局类在我们平时设计系统的时候会经常用到,多用于存储一些对象间的交互数据或者运行时环境参数。
print?
- public class MyClass : System.WIndows.Forms.Form
- {
- public MyClass(string fileName)
- {
- InitializeComponent();
- FileStream myFile = File.Open( filename ); // 窗体设计器可能抛出异常!
- //…
- }
- //…
- }
public class MyClass : System.WIndows.Forms.Form { public MyClass(string fileName) { InitializeComponent(); FileStream myFile = File.Open( filename ); // 窗体设计器可能抛出异常! //… } //… }
这是让人一眼看过去就觉得最直接最有效的方法,绝对有一种踏破铁蹄无觅处,得来全不费功夫的欣快感——可惜的是,用起来一点不奏效。因为如果该窗体是个独立窗体或控件,那一点问题都没有,DesignMode的值如你所愿为true,但是如果它是包含在其他控件中被拖拽到设计器中(例如,把设计好的控件拖入新的WinForms窗体),那么那个接受拖拽的窗体才处于设计模式,而它不是,它已鬼使神差地进入了RunTime模式,然后如我所愿,抛出异常J。
此方法我认为最好。具体做法是写一个全局类,也就是构造函数为 private 限制的类,里面的成员都为static静态类型。这样的一个类由于构造函数是私有的,所以不可能自任何地方任何外部代码中实例化,从而保证了其内成员的唯一性。然后,在程序的入口处,把此类的一个用于表示运行模式的静态成员标识为“运行时”,下面….一切都好说了,看代码吧:
- //全局类
- public class GlobalClass
- {
- //私有构造器,防止实例化
- private GlobalClass(){}
- //用于标识运行时/设计时的bool型静态成员,初始值设为false
- public static bool RunTimeMode = false;
- }
- //包含程序入口的类
- Public class Entry
- {
- …
- //主线程入口点,窗体设计器绝不会执行此方法
- static void Main(string[] args)
- {
- //置为true
- GlobalClass.RunTimeMode = true;
- //…..
- }
- //…
- }
- //某个窗体类
- public class MyForm : System.Windows.Forms.Form
- {
- public MyForm()
- {
- //窗体设计器必须调用的
- InitializeComponent();
- //判断运行模式
- If( GlobalClass.RunTimeMode )
- {
- //在此处做一些窗体设计器会报错的事情
- }
- //…
- }
- //…
- }
//全局类 public class GlobalClass { //私有构造器,防止实例化 private GlobalClass(){} //用于标识运行时/设计时的bool型静态成员,初始值设为false public static bool RunTimeMode = false; } //包含程序入口的类 Public class Entry { … //主线程入口点,窗体设计器绝不会执行此方法 static void Main(string[] args) { //置为true GlobalClass.RunTimeMode = true; //….. } //… } //某个窗体类 public class MyForm : System.Windows.Forms.Form { public MyForm() { //窗体设计器必须调用的 InitializeComponent(); //判断运行模式 If( GlobalClass.RunTimeMode ) { //在此处做一些窗体设计器会报错的事情 } //… } //… } 呵呵,问题圆满解决。其实这样一个全局类在我们平时设计系统的时候会经常用到,多用于存储一些对象间的交互数据或者运行时环境参数。
转载自:http://blog.csdn.net/uyi/archive/2006/03/18/628694.aspx
print?
转载于:https://www.cnblogs.com/lihuali/p/6531679.html
Windows 窗体设计器中的设计时错误相关推荐
- 在.NET Core 3.0 Preview上使用Windows窗体设计器
目录 介绍 软件要求 克服限制 证明问题 解决方案 使用代码 兴趣点 介绍 截至撰写本文时,Microsoft和社区目前正在测试.NET Core 3.0.如果您在.NET Core 3.0的正式可用 ...
- [翻译]用于.NET Core的Windows窗体设计器发布
本文由微信公众号<开发者精选资讯>翻译首发,转载请注明来源 今天我们很高兴地宣布,.NET Core 项目的 Windows 窗体设计器现在可以在 Visual Studio 2019 1 ...
- 通过用 .NET 生成自定义窗体设计器来定制应用程序
本文讨论: ? 设计时环境基本原理 ? 窗体设计器体系结构 ? Visual Studio .NET 中窗体设计器的实现 ? 为自己的应用程序编写窗体设计器而需要实现的服务 在很多年中,MFC 一直是 ...
- C#用DesignSurface实现一个简单的窗体设计器
System.ComponentModel.Design.DesignSurface是为设计组件提供一个用户界面,通过它可以实现一个简单的窗体设计器. 在构建之前,我们需要引入System.Desig ...
- 知识管理系统Data Solution研发日记之六 窗体设计器
知识管理系统Data Solution已经有五篇文章对它进行介绍,可以通过下面的连接,找到前面的文章 知识管理系统Data Solution研发日记之一 场景设计与需求列出 知识管理系统Data So ...
- DotNet(C#)自定义运行时窗体设计器 一
由于项目功能的需要,要做一个运行时的设计器,首先想到的做法就是模仿VS2005的IDE设计器,有设计窗口,有属性格等.刚开始由于没有时间深入探讨,通过监听Windows消息的方法做了一个,效果不是怎么 ...
- 演练:在组件设计器中创建 Windows 服务应用程序
http://msdn.microsoft.com/zh-cn/library/zt39148a(v=vs.80).aspx 演练:在组件设计器中创建 Windows 服务应用程序 .NET Fram ...
- 在 Visual Studio 2019 中为 .NET Core WinForm App 启用窗体设计器
当我们在使用 Visual Studio 2019 非预览版本开发 Windows Forms App (.NET Core) 应用程序时是不能使用窗体设计器的.即使在窗体文件上右击选择"显 ...
- C# winFrom窗体设计问题-部分文件打不开窗体设计器 变成类.cs
https://zhidao.baidu.com/question/1513483178103163220.html C# winform程序设计的时候,出现了问题.默认主窗体form1(改名form ...
最新文章
- html页面视频标签,html5基础标签(html5视频标签 html5新标签用法)
- jbpm4.4基础知识
- WinCE文件目录定制及内存调整
- DOS 批处理命令学习1
- 实录分享 | 计算未来轻沙龙:揭秘AutoML技术(视频 + PPT)
- ITK:基本区域增长
- 我人傻了,火狐坏了,重启系统删了重下都搞不好那种,点开只有弹窗(已解决)
- 30岁的你收入是多少?用数据可视化,看看大家的30岁工资真相
- 分页标签commons.tld,NavigationTag,Page
- UE4 WebUI 4.26下载
- 关于LNK2005的错误
- C# MessageQueue例子
- 巧用CSS,愚人节极客式恶搞
- 记一次搭建 nodebb 论坛
- 十一、海思HISI3556V200摄像头功能裁剪
- yolov1模型结构和训练测试流程详解
- linux 串口 数量限制,linux – 你的Unix的TTY主要数量是多少?
- 双亲委派模型和破坏性双亲委派模型详解
- python2exe_Python 使用Py2exe进行bin化
- iOS - 蓝牙开门智能门锁