c#

位置:IT落伍者 >> c# >> 浏览文章

几个C#编程的小技巧 (上)


发布日期:2020年12月03日
 
几个C#编程的小技巧 (上)

最小化窗口

点击XAlt+F最小化窗口

protected override void WndProc(ref Message m)

{

const int WM_SYSCOMMAND = x;

const int SC_CLOSE = xF;

if (mMsg == WM_SYSCOMMAND && (int) mWParam == SC_CLOSE)

{

// User clicked close button

thisWindowState = FormWindowStateMinimized;

return;

}

baseWndProc(ref m);

}

如何让Foreach 循环运行的更快

foreach是一个对集合中的元素进行简单的枚举及处理的现成语句用法如下例所示

using System;

using SystemCollections;

namespace LoopTest

{

class Class

{

static void Main(string[] args)

{

// create an ArrayList of strings

ArrayList array = new ArrayList();

arrayAdd(Marty);

arrayAdd(Bill);

arrayAdd(George);

// print the value of every item

foreach (string item in array)

{

ConsoleWriteLine(item);

}

}

}

}

你可以将foreach语句用在每个实现了Ienumerable接口的集合里如果想了解更多foreach的用法你可以查看NET Framework SDK文档中的C# Language Specification

在编译的时候C#编辑器会对每一个foreach 区域进行转换IEnumerator enumerator = arrayGetEnumerator();

try

{

string item;

while (enumeratorMoveNext())

{

item = (string) enumeratorCurrent;

ConsoleWriteLine(item);

}

}

finally

{

IDisposable d = enumerator as IDisposable;

if (d != null) dDispose();

}

这说明在后台foreach的管理会给你的程序带来一些增加系统开销的额外代码

将图片保存到一个XML文件

WinForm的资源文件中将PictureBox的Image属性等非文字内容都转变成文本保存这是通过序列化(Serialization)实现的

例子//

using SystemRuntimeSerializationFormattersSoap;

Stream stream = new FileStream(E:\\ImagexmlFileModeCreateFileAccessWriteFileShareNone);

SoapFormatter f = new SoapFormatter();

Image img = ImageFromFile(E:\\Imagebmp);

fSerialize(streamimg);

streamClose();

屏蔽CTRLV

在WinForm中的TextBox控件没有办法屏蔽CTRLV的剪贴板粘贴动作如果需要一个输入框但是不希望用户粘贴剪贴板的内容可以改用RichTextBox控件并且在KeyDown中屏蔽掉CTRLV键例子

private void richTextBox_KeyDown(object sender SystemWindowsFormsKeyEventArgs e)

{

if(eControl && eKeyCode==KeysV)

eHandled = true;

}

               

上一篇:.NET框架中的Factory模式

下一篇:Visual Studio中对Linux应用进行远程调试