-
c# 关闭窗体的四种方法
2020-11-24 20:32:331. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。 此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了...关闭窗体的四种方法
1. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。
此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种情况:(1)该窗体是多文档应用程序(MDI)的一部分并且此窗体不可见;(2)此窗体是“模态”窗体。
close() 方法执行的时候会触发两个事件:Form_Closing 和 Form_Closeed 事件,Form_Closing 是在窗体关闭时执行,Form_Closed 是在窗体关闭之后执行,所以如果想取消关闭窗体,可以在 Form_Closing 事件里取消。2. Application.Exit(): 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出。
3. Application.ExitThread(): 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题。
4. System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 参数0:代表程序正常退出;参数1:代表程序非正常退出。
close() 和 dispose() 的区别
close():这个方法会自动调用 dispose()方法。
dispose():这个方法的作用是释放组件使用的所有资源,.NET 提供的垃圾自动回收机制,可以帮我们自动回收垃圾对象,可是垃圾回收器只能回收“托管资源”,而不能回收“非托管资源”,而且垃圾回收器也并不是立即回收,而是每隔一段时间才会回收一次,每次回收的时间我们都不知道。
所以 dispose() 方法是为了弥补这种机制所产生的方法,调用 dispose(true) 方法可以释放“托管”和“非托管”资源,而且它可以不必等待垃圾回收器来自动释放,调用此方法可以显示释放资源。Form.show() 和 Form.ShowDialog() 的区别
From.Show():窗体显示出来的是非模态窗体
From.ShowDialog():窗体显示出来的是模态窗体,而且点击窗体右上角的关闭按钮时,它不是调用 close() 方法,而是调用 hide() 方法。所以它并不是真正的关闭,再调用此方法窗体还会出现。而非模态窗体,点击关闭的时候,会调用 close() 方法,再次调用 Show() 方法,就会报错,因为窗体对象已被释放。托管资源 和 非托管资源
托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象
非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等如果某类型使用到了非托管资源,那么,就需要让此类型继承接口IDisposable。需要显示释放资源,因为垃圾回收器并不会回收非托管资源。
-
C#关闭窗体
2019-05-27 10:10:451. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。 此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种情况:(1)该窗体是...1. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。
此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种情况:(1)该窗体是多文档应用程序(MDI)的一部分并且此窗体不可见;(2)此窗体是“模态”窗体。
close() 方法执行的时候会触发两个事件:Form_Closing 和 Form_Closeed 事件,Form_Closing 是在窗体关闭时执行,Form_Closed 是在窗体关闭之后执行,所以如果想取消关闭窗体,可以在 Form_Closing 事件里取消。2. Application.Exit(): 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出。
3. Application.ExitThread(): 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题。
4. System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 参数0:代表程序正常退出;参数1:代表程序非正常退出。
close() 和 dispose() 的区别
close():这个方法会自动调用 dispose()方法。
dispose():这个方法的作用是释放组件使用的所有资源,.NET 提供的垃圾自动回收机制,可以帮我们自动回收垃圾对象,可是垃圾回收器只能回收“托管资源”,而不能回收“非托管资源”,而且垃圾回收器也并不是立即回收,而是每隔一段时间才会回收一次,每次回收的时间我们都不知道。
所以 dispose() 方法是为了弥补这种机制所产生的方法,调用 dispose(true) 方法可以释放“托管”和“非托管”资源,而且它可以不必等待垃圾回收器来自动释放,调用此方法可以显示释放资源。Form.show() 和 Form.ShowDialog() 的区别
From.Show():窗体显示出来的是非模态窗体
From.ShowDialog():窗体显示出来的是模态窗体,而且点击窗体右上角的关闭按钮时,它不是调用 close() 方法,而是调用 hide() 方法。所以它并不是真正的关闭,再调用此方法窗体还会出现。而非模态窗体,点击关闭的时候,会调用 close() 方法,再次调用 Show() 方法,就会报错,因为窗体对象已被释放。 -
winform关闭当前form_c#关闭窗体的四种方法
2020-12-19 03:30:21close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种...关闭窗体的四种方法
1. close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。
此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了以下两种情况:(1)该窗体是多文档应用程序(MDI)的一部分并且此窗体不可见;(2)此窗体是“模态”窗体。
close() 方法执行的时候会触发两个事件:Form_Closing 和 Form_Closeed 事件,Form_Closing 是在窗体关闭时执行,Form_Closed 是在窗体关闭之后执行,所以如果想取消关闭窗体,可以在 Form_Closing 事件里取消。
2. Application.Exit(): 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出。
3. Application.ExitThread(): 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题。
4. System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 参数0:代表程序正常退出;参数1:代表程序非正常退出。
close() 和 dispose() 的区别
close():这个方法会自动调用 dispose()方法。
dispose():这个方法的作用是释放组件使用的所有资源,.NET 提供的垃圾自动回收机制,可以帮我们自动回收垃圾对象,可是垃圾回收器只能回收“托管资源”,而不能回收“非托管资源”,而且垃圾回收器也并不是立即回收,而是每隔一段时间才会回收一次,每次回收的时间我们都不知道。
所以 dispose() 方法是为了弥补这种机制所产生的方法,调用 dispose(true) 方法可以释放“托管”和“非托管”资源,而且它可以不必等待垃圾回收器来自动释放,调用此方法可以显示释放资源。
Form.show() 和 Form.ShowDialog() 的区别
From.Show():窗体显示出来的是非模态窗体
From.ShowDialog():窗体显示出来的是模态窗体,而且点击窗体右上角的关闭按钮时,它不是调用 close() 方法,而是调用 hide() 方法。所以它并不是真正的关闭,再调用此方法窗体还会出现。而非模态窗体,点击关闭的时候,会调用 close() 方法,再次调用 Show() 方法,就会报错,因为窗体对象已被释放。
托管资源 和 非托管资源
托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象
非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等
如果某类型使用到了非托管资源,那么,就需要让此类型继承接口IDisposable。需要显示释放资源,因为垃圾回收器并不会回收非托管资源。
---------------------
作者:张伟杰-Vijay
来源:CSDN
原文:https://blog.csdn.net/zwj_jyzl/article/details/82316151
-
c#复习2----窗体部分
2020-06-22 20:59:40第十二章(winform编程) 1.所有Windows窗体控件都是...5.以下哪个选项不属于ListBox控件Item属性的方法() ps:在ListBox.Item里Count是属性不是事件 6.Windows窗体应用程序的编程模型主要由( )三部分组成。 7.Bu第十二章(winform编程)
1.所有Windows窗体控件都是从System.Windows.Forms.Control类继承而来,它公开的成员不包含( )
2.改变窗体\控件的标题,需要修改的属性是()
3.在C#中,可以标识不同的对象的属性是()
4.当鼠标悬停在控件上方时,触发的事件是()
5.以下哪个选项不属于ListBox控件Item属性的方法()
ps:在ListBox.Item里Count是属性不是事件6.Windows窗体应用程序的编程模型主要由( )三部分组成。
7.Button控件的属性ClickMode可以获取Click事件,这里的Click模式有( )
8.所有的窗体、组件和控件都是类。
9.C# Winform程序中,新建的窗体后台cs代码自动继承了Form窗体。
10.所有的鼠标事件都使用MouseEventArgs类。(错的)
ps:有些不是11.图片框PictureBox中用于定义图片路径的属性是ImagePath。(错的)
ps:属性应该是image第十四章(窗体、对话框、菜单)
1.当鼠标右击一个控件时出现的菜单一般称为(B)
ps:
(1)主菜单是menuStrip(就是窗体上面那个)
(2)上下文菜单是contextMenuStrip(就是右键一个控件才能见到的菜单)
(3)子菜单(就是主菜单的分支)
(4)菜单项是StatusStrip(就是窗体下面那个)2.为菜单添加快捷键的属性是()
ps:不是A!!!就是ShortcutKeys别想多了3.OpenFileDialog是打开文件对话框,显示此对话框的语句是OpenFileDialog1.ShowDialog();当用户点击此对话框的“确定”按钮时,该语句返回等于()
4.想要在打开对话框中只显示后缀名为TXT和DOCX文件,那么应设定打开对话框的Filter 的值为()
ps: TXT|.TXT|DOCX|.DOCX5.上下文菜单ContextMenu是通过控件的MenuStrip属性进行关联。(错的)
ps:没有联系6.当调用窗体的Hide方法,程序会直接将此窗体的对象删除掉。(错的)
ps:Hide是隐藏7.菜单会自动将子菜单分类显示(错的)
ps:子菜单得自己建,自己手动分类第十五章(文件)
1.以下类中(C)需要实例化
2.以下描述中,错误的是( C)
ps:object是间接父类不是直接父类3.对读写文本文件描述错误的是(B)
ps:这个True是追加到文件尾的意思。用于文本文件读写的主要有两个对象, StreamWriter对象和StreamReader对象。
下段程序的输出是( 6789 ) class Program { static void Main(string[] args) { string path = @"D:\1.txt"; FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite); string message = "123456789abcdefg"; byte[] info = new UTF8Encoding(true).GetBytes(message); fs.Write(info, 5, 4); fs.Flush(); fs.Close(); } }
ps:相当于一个数组(从0开始)的第五位是6,然后连着四个,就是6789了
5.对于Path类的方法描述正确的是( A)
6.以下程序,描述错误的是( ) class Program { static void Main(string[] args) { string path = @"c:\trytest.txt"; File.Create(path).Close(); if(File.Exists(path)) { StreamWriter sw = File.AppendText(path); sw.Write("hello"); sw.Write("test"); sw.Close(); } } }
ps:认真看题,问的是错误的是什么。
注释掉close就无法关闭,但不会报错。7.序列化描述,错误的是( A)
ps:serializable才可以序列化使用BinaryWriter和BinaryReader读取二进制流文件时,描述错误的是(D ) class Program { static void Main(string[] args) { FileStream fsW = new FileStream(@"c:\1.bin", FileMode.Create, FileAccess.Write); BinaryWriter bwMyFile = new BinaryWriter(fsW); string s = "恭喜你学会了"; int grade = 100; bwMyFile.Write(s); bwMyFile.Write(grade); bwMyFile.Close(); fsW.Close(); FileStream fsR = new FileStream(@"c:\1.bin", FileMode.Open, FileAccess.Read); BinaryReader brMyFile = new BinaryReader(fsR); Console.WriteLine(brMyFile.ReadInt32()); Console.WriteLine(brMyFile.ReadString()); } }
ps:注意看题,问的是错误的是什么
大概思路就是按顺序输入就行了,先s再grade。9.StreamReader类继承自Stream类。(错的)
ps:StreamReader类继承于TextReader类
10.Directory和DirectoryInfo类提供对目录的操作。
11.FileStream类的Seek方法总是会以相对于文件开头的位置搜索。(错的)
ps:seek()可以从头找,也可以从尾找12.FileStream以FileMode.Create方式创建文件时,如果文件已存在,则会报错。(错的)
ps:如果文件已存在,不会报错,是替换掉它13.Serialize方法和Deserialize方法都要求使用Stream对象。
14.二进制文件读写的顺序要保持一致,否则会报错。
-
web窗体处理流程
2013-07-01 18:25:43以下就是web窗体的六个处理过程: 1. 页面框架初始化:当用户请求到来时,页面框架首先进行初始化,在这个过程中,生成了aspx页面定义的控件。另外,如果是回送请求,也就是说不是首次被加载,那么在这个过程还将... -
Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好
2011-01-28 17:02:085.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽 函数,写入一句 void loginDlg::on_loginBtn_clicked() { accept(); } 6.改写main.cpp: #include #include "widget.h" #include "logindlg... -
Delphi 判断文件是否是文本文件类型.rar
2019-07-10 17:48:55这个判断程序并不会打开文件,只是通过ExtractFileExt函数来读取扩展名,在窗体上制作一个按钮,将按钮事件添加到该按钮中,当用户单击按钮选择指定文件后,立即获取扩展名信息并判断是否是文本文件,以下为按钮事件... -
C#UI线程产生的子线程如何在UI结束时,干净的结束
2013-01-18 09:52:40你需要在退出事件里面,适当的使用以下方法. 1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 2.Application.Exit(); 强制所有消息... -
selenium的常见问题及解决办法
2018-12-27 15:42:28存在多个窗体时,id不是当前焦点窗体对应的属性; c.存在嵌套frame,需要switch后再定位 2. 鼠标事件: 首先调用ActionChains,语句为: from selenium.webdriver.common.Action_chains impor... -
学习J2ME编程需要掌握的七种技术(转载加自测)
2005-01-04 12:33:00主要包含以下技术:1、 高级用户界面高级用户界面是指J2ME编程中用到的Form(窗体)、TextBox(文本框)、List(列表框)和Alert(提示信息框)等的使用,以及其中的一些控件的使用,当然也包括相应的事件处理。应用在一般... -
ASP.NET的网页代码模型及生命周期
2009-07-28 14:22:11在.aspx页面中,代码隐藏页模型的.aspx页面代码基本上和单文件页模型的代码相同,不同的是在script标记中的单文件页模型的代码默认被放在了同名的.cs文件中,.aspx文件示例代码如下所示。 “C#” AutoEventWireup=... -
软件中常见基础编程功能实现(不断改进加载中…)收藏
2009-02-23 10:43:00某一控件的各种事件的实现~~一, 软件中最常见的就是循环和遍历的用法,实现遍历很容易,所以学习中重要的是注意以下都是什么地方需要遍历。一般是在需要查找某个元素,或是存储的某信息包括若干字段的时候,或是... -
软件中常见基础编程功能实现(不断改进加载中…)
2008-10-18 09:20:00某一控件的各种事件的实现~~一, 软件中最常见的就是循环和遍历的用法, 实现遍历很容易,所以学习中重要的是注意以下都是什么地方需要遍历。一般是在需要查找某个元素,或是存储的某信息包括若干字段的时候,或是... -
Url重写篇视频------本讲将通过实例比较ASP.NET下的三种典型URL重写方案
2009-04-22 08:15:51回到前面的规则定义部分,我们就能发现,folder default page使用的是由IIRF这个ISAPI定义的规则,而另两个则使用的是内置于ASP.NET2.0的HTTPModule的重写规则(本质上,urlMappings也是使用HTTPModule来实现重写的... -
C# for CSDN 乱七八糟的看不懂
2012-06-03 15:40:47定义 数组是一种排列有序的数据结构,包含于数组中的变量被称为数组的元素, 它们都有相同的类型。 数组声明 int [] array1 = new int[5]; int [,,] array3 = new int[10,20,30]; int [] array1 = new int[] {1,2,4}... -
机房总结限制类型总结
2019-09-11 10:20:32再这十天敲第一次机房中,出错误最多的地方之一就是因为限制类型不对,或限制错误,所以出现了Bug,或者是能...第二点则是控件内是否允许赋值为空,当窗体的加载事件运行时,链接数据库时,数据库没有最后一条记录的... -
你必须指定新窗体的Owner为当前的主窗体,或者使用另一个重载方法PUMessageBox.CloseAwait(EventHandle closedCallback)关闭等待窗口,并将打开窗体的方法放入此事件处理中。否则新打开的窗体将被立即关闭。 示例: ...
-
软件工程知识点
2012-12-02 21:34:25通过系统的外部事件、内部状态为基本元素来描绘系统的工作流程,这种建模方式比较适合于描述一些依赖于外部事件驱动的实时系统。 5.需求有效性验证 需求有效性验证是指对已经产生的需求结论所要进行的检查与评价。... -
VB课程设计俄罗斯方块
2011-02-25 10:46:55利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块... -
e语言-易语言超级编辑框
2019-08-23 12:33:14用黑月OCX驱动支持库调用,暂时没发现BUG以下是官方关于控件的介绍,机器翻译的内容,凑合看吧:SftMask/OCX提供了许多独特的特性,这些特性简化了应用程序中的数据输入和数据验证。SftMask/OCX支持各种完全可自定义... -
OrangeUI 1.74 D10.1&D10;.1.2&D10;.2.2 包含安装文档和DEMO, XE10.2编译通过
2018-11-29 13:34:4011.稳定灵活的Frame开发方案(发布会李维老师推荐),可以很好的将复杂的主窗体分解成四、五个小页面,加快页面的截入速度,减少内存占用,并且按返回键自动返回上一页的处理,让你打造出高效的APP。 12.开源的微信... -
C#高级编程(第9版):C# 5.0 & .NET 4.5.1.[美]Christian Nagel(带详细书签) PDF 下载 高清 完整版
2017-12-26 14:02:25现在可以在非UI线程中填充集合,功能区控件现在是架构的一部分,通过事件的弱引用也更容易实现,数据验证可以用INotifyDataErrorInfo接口异步完成;实时绘图功能可以方便地动态排序、分组修改了的数据。 ASP.NET ... -
c# 加密和解密相关代码
2011-09-06 11:04:59(2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加两个GroupBox 容器控件,其中, 在第一个GroupBox 中放入3 个TextBox 控件和一个Button 按钮,分别用于输入数字、输入加密数字、显示加 密后的数字和... -
仿QQ日历控件开源项目
2009-04-21 20:28:43此项目的源码涉及到了以下方面的知识和技术: 1. Windows窗体坐标(逻辑坐标,客户区坐标概念)。 2. 图像自绘(不是MFC来绘制而是自已来管理一切)。 3. 双缓冲技术运用(有时侯自绘的控件可能会有“闪烁感”,在... -
net学习笔记及其他代码应用
2010-11-16 18:15:09//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。 } } } 答:if( OnNew != null ) OnNew( this, e ); 27.分析以下代码,完成填空 string strTmp = \"abcdefg某某某\"; int i= System.Text.... -
JAVA上百实例源码以及开源项目源代码
2018-12-11 17:07:42设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后... -
JAVA上百实例源码以及开源项目
2016-01-03 17:37:40Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,... -
ASP.NET精品课程+源代码
2009-01-05 20:15:51它所培养的是具有较高水平、较高素质的高技能型人才(而不是策划、设计、科研型人才)。在制定教学模式时,最重要的是突出实践性、应用性。 大家知道ASP.NET 是目前非常流行的开放式的Web服务器的应用程序开发技术。它... -
C#微软培训教材(高清PDF)
2009-07-30 08:51:17第十三章 事件和索引指示器 .148 13.1 事 件 .148 13.2 索引指示器 .151 13.3 小 结 .154 第十四章 继 承 .155 14.1 C#的继承机制.155 <<page 3>> page begin==================== 14.2 多 态 性 ....