FileStream复制文件注意事项
使用FileStream读取文件时,为避免将大文件一次性全部读取到内存中,我们经常会声明一个byte做为临时存储空间,然后循环读取内容: 同理,在复制文件时我们也不希望将大文件一次性都读取到内存中,同样可以声明一个byte做为临时存储空间: 问题来了,当最后一次读取不满1024字节时,byte数组的剩余项都为0,这样在写入时将致使新文件比原文件占用更多的空间: 只需将代码稍加修改即可:
使用FileStream读取文件时,为避免将大文件一次性全部读取到内存中,我们经常会声明一个byte做为临时存储空间,然后循环读取内容: 同理,在复制文件时我们也不希望将大文件一次性都读取到内存中,同样可以声明一个byte做为临时存储空间: 问题来了,当最后一次读取不满1024字节时,byte数组的剩余项都为0,这样在写入时将致使新文件比原文件占用更多的空间: 只需将代码稍加修改即可:
/// <summary> /// 打开MDI窗体,同一个窗体只能运行一个实例 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="parent"></param> public static void OpenForm<T>(Form parent) where T : Form,new() { //已打开则激活 foreach (Form f in parent.MdiChildren) { if (f is T) { f.Activate(); return;…
在C#的WinForm程序中,有的时候需要判定关闭请求从哪里发出来的。比如是用户点击了右上角的“关闭”按钮,还是调用了WinForm.Close()方法。最典型的是要知道点击右上角的“关闭”按钮发出的事件。下面这个方法可以判断这点:
今天头一次在Windows 应用程序中使用Access数据库,奇怪的是代码执行后所有操作似乎被回滚了,但程序又没报错。下边是一段添加记录的代码: 执行后打开数据库查看,并没有新增的记录!最终发现原因是:Windows 应用程序每次编译时,都会复制一份原始的Access数据库到Bin文件夹下,应用程序中的操作都是针对新数据库进行的,而我都是查看原始的那份Access数据库,才会有操作都被回滚的错觉
WinForm应用程序做资料录入时,有些内容我们不希望让用户手工录入,而是弹出一新窗体让用户选择内容,这时我们就需要一个类似控件: vs2008中没有这样的控件,但通过组合TextBox和Button控件可以实现要求,这样我们得做个用户控件来满足需求,命名为ComboTextBox。 第一步:新建用户控件ComboTextBox,在界面放置好TextBox和Button后,控件代码(ComboTextBox.cs)如下: 第二步:主窗体代码(Form1.cs)如下: 最终效果: 点击这里下载源码,使用vs20008开发。
1.只显示自定义列 2.禁止调整行列大小 3.标题和内容居中显示 4.显示行号 添加RowPostPaint事件处理程序: 5.单元格内容格式化 添加CellFormatting事件处理程序: 6.修改行文字颜色/行背景色 添加CellFormatting事件处理程序: 7.右键点击行时选中行,并弹出操作菜单 ①. 添加一个快捷菜单contextMenuStrip1; ②. 给dataGridView1的CellMouseDown事件添加处理程序: 效果图: 8.复制选中单元格的内容到剪贴板 9.自定义列宽 手动添加列,再在编辑列界面中逐个设置宽度。注意AutoSizeColumnsMode的值必须为DataGridViewAutoSizeColumnsMode.None,否则自定义宽度不能生效!…
面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法——结构化程序设计所不能解决的代码重用问题。 结构化程序设计从系统的功能入手,按照工程的标准和严格的规范将系统分解为若干功能模块,系统是实现模块功能的函数和过程的集合。由于用户的需求和软、硬件技术的不断发展变化,按照功能划分设计的系统模块必然是易变的和不稳定的。这样开发出来的模块可重用性不高。 面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务(功能)为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 面向对象程序设计同结构化程序设计相比最大的区别就在于:前者首先关心的是所要处理的数据,而后者首先关心的是功能。…
当然,这里所谓的文件是指完整的文件名称,至于文件的内容,须按实际情况进一步的操作。 我这里的控件为一个ListBox。代码如下: 重写这个HOW TO,主要的是看到有人用API实现,代码如下: VB.NET: C#:
标准控件 1 btn Button 2 chk CheckBox 3 ckl CheckedListBox 4 cmb ComboBox 5 dtp DateTimePicker 6 lbl Label 7 llb LinkLabel 8 lst ListBox 9 lvw ListView 10 mtx MaskedTextBox 11 cdr MonthCalendar 12 icn NotifyIcon 13 nud NumeircUpDown 14 pic PictureBox 15 prg ProgressBar 16 rdo RadioButton 17 rtx RichTextBox…
在WinForm开发过程中,如果没有采用多线程编程,经常会出现在执行某个操作时整个界面卡死,无法再做其他操作,而采用多线程编程能很好的解决这个问题,但随之而来的又有线程间控件的操作问题(.NET不允许在创建某控件之外其他线程中操作控件),下边我们用一个例子说明怎么使用BackgroundWorker解决这一系列的问题: