(1)C# WinForm程序退出的方法

1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;

2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;

3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;

4.System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。

(2)每个finally里面都写GC.Collect()有坏处吗?

没好处,垃圾回收机制最好不要控制,一般GC会在最适合的时间进行垃圾回收,频繁调用GC.Collect()反而会造成不必要的资源耗费,因为.NET内部已经分成了3代内存存储,很大程度避免垃圾回收的代价,还有,一般在编译的时候,编译器已经帮你添加了相应的FINALLY了,除非你很明确你使用的资源是否是非托管资源 与该资源耗费的内存量。

——WebRequest、WebClient、Socket、和数据库对象使用的资源是不是非托管资源呢?

——一般涉及到 数据流的  比如具有 stream 特性的资源,最好都using()去控制,具体你可以查阅相关类的特性 就像 Socket 很明显就是一个数据流方式的类,具体的细节要看你应用场景了。

(3)winform 判断硬盘上的文件是否存在,不存在则在硬盘上建立一个文件,txt,创建文件...

判断文件存不存在 第一个方法

File.Exists(Application.StartupPath + "\\AlarmSet.txt")

判断文件存不存在 第二个方法

System.IO.DirectoryInfo info = new System.IO.DirectoryInfo(Application.StartupPath + "\\AlarmSet.txt");
MessageBox.Show(info.Exists.ToString());

创建文件

File.Create(Application.StartupPath + "\\AlarmSet.txt");//创建该文件

(4) Form 的 this.close() 和 this.dispose ()的區別

close方法在释放资源后还可以继续使用,并没有在内存中删除,但是dispose方法会从内存中删除该资源,而你就不能再使用它!

例如:你有两个窗体Form1和Form2,你在第一个窗体中用Form2 XXX=new Form2然后你调用close方法,这时资源还在,你仍可以用XXX.show()方法使用Form2,但是如果你用的是dispose方法,那么该资源就不存在了,如果这时你调用XXX.show()方法的话,就会出错!

(5)C#中强制关闭某个进程

/// <summary>
/// 关闭进程
/// </summary>
/// <param name="processName">进程名</param>
private void KillProcess(string processName)
{
Process[] myproc = Process.GetProcesses();
foreach (Process item in myproc)
{
if (item.ProcessName == processName)
{
item.Kill();
}
}
}

※相關鏈接:

https://blog.csdn.net/weizhiai12/article/details/6930780

(6)C#中操作EXCEL后,关闭对象但EXCEL进程仍然存在的解决办法.

现象 :我在C#中,需要从EXCEL导入或者导出数据,当导入导出结束后,使用excelApp.Quit()关闭EXCEL对象,但系统进程中仍然存在EXCEL进程.并没有关闭.

原因:其实excelApp.Quit();方法是可以正确的释放EXCEL进程的,我们导入导出EXCEL时,普遍方法是代码后台处理,前台并隐藏EXCEL界面,也就是excelApp.Visible = false (这是默认值,不设置的话也是False),当调用 excelApp.Quit()时,EXCELE会弹出个对话框,问你是否保存,而excelApp.Visible = false 时,保存对话框也一并隐藏掉了,所以EXCEL卡在了这个地方,造成了EXCEL不能正常释放进程.

解决方法:设置excelApp.DisplayAlerts = false,就是不提问任何提示,这样再关闭EXCEL对象时,就不会有保存提示,也就不会卡住了

※相關鏈接:

https://bbs.csdn.net/topics/390898375

https://blog.csdn.net/spw55381155/article/details/79891108

(7)C#/winform设置窗体自动缩放适应不同尺寸的电脑屏幕大小

由于要用winform开发一个桌面安装版考试软件,用户量也比较多,

所以很多用户反映软件的界面经常超出屏幕,部分功能或内容无法显示完整。

软件界面有几个设置大小固定为宽1066, 高718。

我本机的开发电脑是宽屏的,所以显示效果还是不错,但是用户的电脑配置千奇百怪,

各种尺寸都有,居然还有用几年前的上网本来使用的,导致界面超出了,无语啊。

之前我想了一种方式就是,主界面自动最大化(自动获取屏幕大小设置为界面自身大小),

然后就是把主窗体设置为容器模式,把所有的窗体都在主窗体内显示,如果子窗体比父窗体大,

父窗体则会自动出现滚动条,不会出现子窗体内容不能显示完整的情况。

这种模式虽然可以,但是好好的程序再去改成这样,就懒得弄了,

今天看窗体属性,突然发现一个AutoScaleMode属性,

百度了一下,居然可以设置窗体随着分辨率改变来适应电脑屏幕。

系统默认是:Inherit 。

① None : 禁用自动缩放。(默认时)

② Font :根据类使用的字体(通常为系统字体)的维度控制缩放。

如果希望控件或窗体根据操作系统中字体的大小进行拉伸或缩小,则按 Font 缩放十分有用,如果控件或窗体的绝对大小无关紧要,则应使用这种方式进行缩放。比如:一个按钮的文字,改变了系统的字体大小,按钮也随着变大到能完整显示文字。

③ Dpi : 根据显示分辨率控制缩放。常用分辨率为 96 和 120 DPI。

如果要相对于屏幕确定控件或窗体的大小,则按 Dpi 缩放十分有用。例如,对于显示图表或其他图形的控件,可能希望使用每英寸点数 (DPI) 缩放,以便该控件始终占据一定百分比的屏幕

④ Inherit   : 根据类的父类的缩放模式控制缩放。如果不存在父类,则禁用自动缩放。

AutoScaleMode属性设置好之后,最好还要搭配另外三个属性来控制窗体的大小。如下:

Autosize=false,设置窗体不根据内容超出而调整窗体自身大小,以免窗体超出屏幕。

AutoScroll=true,设置窗体当内容超出窗体时,自动产生滚动条。这样用户依靠滚动条既可以完全看到超出窗体的内容了。

MaximizeBox=true,可设置窗体最大化,当窗体超出屏幕时,用户可设置窗体最大化来让窗体尺寸贴合用户屏幕。

(8)Winfrom如何进行左边菜单栏,右边内容的设计

https://blog.csdn.net/m0_37986311/article/details/81604953

Winform相关的更多相关文章

  1. WinForm相关注意点

    1. //this.dgvEmployees.ColumnHeadersDefaultCellStyle.ForeColor = Color.Blue; //dgvEmployees.RowHeade ...

  2. WinForm编程数据视图之DataGridView浅析

    学习C#语言的朋友们肯定或多或少地接触到了WinForm编程,在C#语言的可视化IDE中(如VS.NET中)使用设计器可以让我们轻松地完成窗体.按钮.标签.图片框等等控件的组合,我们可以轻易地做出界面 ...

  3. winform 学习之qq邮箱正则验证及常用正则

    这段时间一直再做winform相关的项目,记录了一些东西 qq邮箱正则表达式: 第一种:字母和数字组合邮箱判断 string str = "justin1107@qq.com"; ...

  4. ArcMap插件开发初识:Add In

    之前一直在做ArcEngine的相关开发,做的winform相关,新换了工作,又开始新的学习旅程! Add In 这个东西很早就知道有,但是一直没有用过,因为之前的公司有自己框架,接口,虽然我也是做插 ...

  5. 将传统 WPF 程序迁移到 DotNetCore 3.0

    介绍 由于历史原因,基于 Windows 平台存在着大量的基于 .NetFramework 开发的 WPF 和 WinForm 相关程序,如果将这些程序全部基于 DotNetCore 3.0 重写一遍 ...

  6. .NET Windows Form 改变窗体类名(Class Name)有多难?

    研究WinForm的东西,是我的一个个人兴趣和爱好,以前做的项目,多与WinForm相关,然而这几年,项目都与WinForm没什么关系了,都转为ASP.NET MVC与WPF了.关于今天讨论的这个问题 ...

  7. DevExpress源码编译总结 z

    本篇文章内容包括基础知识(GAC.程序集强签名.友元程序集).编译过程.注册GAC.添加工具箱.多语言支持.运行时和设计时调试 源码地址 链接:http://pan.baidu.com/s/1eQm1 ...

  8. VS2010-安装包制作过程图解

    最近做了winform相关程序,开始总结制作安装包过程. 1.首先在打开 VS2010    =>新建=>项目 2.创建一个安装项目  Setup1 在“目标计算机上的文件系统”下我们看见 ...

  9. DevExpress源码编译总结

    独家提供完整可编译sln文件,本篇文章内容包括基础知识(GAC.程序集强签名.友元程序集).编译过程.注册GAC.添加工具箱.多语言支持.运行时和设计时调试 源码地址  链接:http://pan.b ...

随机推荐

  1. linux 虚拟机设置

    1.可以用网桥方式 2.可以用一个回环虚拟网卡即可.

  2. ubuntu配置ftp server

    ubuntu配置ftp server 1. 安装vsftpd   sudo apt-get install vsftpd 安装后会自动新建一个用户ftp,密码ftp,作为匿名用户登录的默认用户 sud ...

  3. 解疑网络监控卡壳 视觉体验400ms延时

    http://security.zol.com.cn/413/4130220.html 我的眼睛可以轻松判断出400ms延时误差,你可以吗?很多用户都反映手机移动监控.PC远程监控视频会卡顿,抛开设备 ...

  4. spring学习 十一 AspectJ-based的通知入门 不带参数的通知

    AspectJ-Based方式的AOP,通知类不需要实现任何接口,且前置通知,后置通知,环绕通知,异常通知都可以写在一个类中,下面先实现一个简单的,不带参数的通知. 第一步定义通知类,通知类中的通知( ...

  5. LSTM长短期记忆神经网络模型简介

    LSTM网络也是一种时间递归神经网络,解决RNN的长期依赖关系. RNN模型在训练时会遇到梯度消失或者爆炸的问题,训练时计算和反向传播,梯度倾向于在每一时刻递增或递减,梯度发散到无穷大或者0..... ...

  6. kbmmw 中虚拟文件操作入门

    kbmmw 中一直有一个功能,但是基本上都没有提过,但是在实际应用中,却非常有用,这个功能就是 虚拟文件包功能,他可以把一大堆文件保存到一个文件里面,方便后台管理. kbmmw 的虚拟文件在单元kbm ...

  7. myeclipse部署项目的时候报No projects are available for deployment to this server但是项目明明存在

    如题,今天在尝试部署从SVN上down下来的项目时,发现不能被tomcat识别成web项目!原因是SVN上down下来的项目的结构并非典型的web项目.  解决办法,右键项目->properti ...

  8. JSP错误

    1.<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodin ...

  9. 富文本粘贴word文档内容图片处理

    公司做的项目要用到文本上传功能. 网上找了很久,大部分都有一些不成熟的问题,终于让我找到了一个成熟的项目. 下面就来看看: 1.打开工程: 对于文档的上传我们需要知道这个项目是否符合我们的初衷. 运行 ...

  10. canvas画的时钟

    结合几天来学习的canvas的API,终于完成了一个时钟呵呵 html <!doctype html> <html> <head> <meta charset ...