七个C#编程的小技巧

 我来答
舒适还明净的海鸥i
2022-11-20 · TA获得超过1.7万个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:70万
展开全部

   一 最小化窗口

  点击 X 或 Alt+F 时 最小化窗口   如   protected override void WndProc(ref Message m)   {    const int WM_SYSMAND = x ;    const int SC_CLOSE = xF ;    if (m Msg == WM_SYSMAND && (int) m WParam == SC_CLOSE)    {     // User clicked close button     this WindowState = FormWindowState Minimized;     return;    }    base WndProc(ref m);   }

   二 如何让Foreach 循环运行的更快   foreach是一个对集合中的元素进行简单的枚举及处理的现成语句 用法如下例所示   using System;   using System Collections;   namespace LoopTest   {    class Class    {     static void Main(string[] args)     {      // create an ArrayList of strings      ArrayList array = new ArrayList();      array Add( Marty );      array Add( Bill );      array Add( Gee );      // print the value of every item      foreach (string item in array)      {       Console WriteLine(item);      }     }    }   }   你可以将foreach语句用在每个实现了Ienumerable接口的集合里 如果想了解更多foreach的用法 你可以查看 NET Framework SDK文档中的C# Language Specification

  在编译的时候 C#编辑器会对每一个foreach 区域进行转换   IEnumerator enumerator = array GetEnumerator();   try    {    string item;    while (enumerator MoveNext())     {     item = (string) enumerator Current;     Console WriteLine(item);    }   }   finally    {    IDisposable d = enumerator as IDisposable;    if (d != null) d Dispose();   }   这说明在后台 foreach的管理会给你的程序带来一些增加系统开销的额外代码

   三 将图片保存到一个XML文件   WinForm的资源文件中 将PictureBox的Image属性等非文字内容都转变成文本保存 这是通过序列化(Serialization)实现的   例子   using System Runtime Serialization Formatters Soap;   Stream stream = new FileStream( E:\\Image xml FileMode Create FileAccess Write FileShare None);   SoapFormatter f = new SoapFormatter();   Image img = Image FromFile( E:\\Image bmp );   f Serialize(stream img);   stream Close();

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

  private void richTextBox _KeyDown(object sender System Windows Forms KeyEventArgs e)   {    if(e Control && e KeyCode==Keys V)    e Handled = true;   }

   五 判断文件或文件夹是否存在   使用System IO File 要检查一个文件是否存在非常简单     bool exist = System IO File Exists(fileName);

  如果需要判断目录(文件夹)是否存在 可以使用System IO Directory   bool exist = System IO Directory Exists(folderName);

   六 使用delegate类型设计自定义事件   在C#编程中 除了Method和Property 任何Class都可以有自己的事件(Event) 定义和使用自定义事件的步骤如下     ( )在Class之外定义一个delegate类型 用于确定事件程序的接口    ( )在Class内部 声明一个public event变量 类型为上一步骤定义的delegate类型    ( )在某个Method或者Property内部某处 触发事件    ( )Client程序中使用+=操作符指定事件处理程序 

  例子 // 定义Delegate类型 约束事件程序的参数   public delegate void MyEventHandler(object sender long lineNumber) ;   public class DataImports   {    // 定义新事件NewLineRead    public event MyEventHandler NewLineRead ;    public void ImportData()    {     long i = ; // 事件参数     while()     {      i++ ;      // 触发事件      if( NewLineRead != null ) NewLineRead(this i);      //     }     //    }    //   }

  // 以下为Client代码

  private void CallMethod()   {    // 声明Class变量 不需要WithEvents    private DataImports _da = null;    // 指定事件处理程序    _da NewLineRead += new MyEventHandler(this DA_EnterNewLine) ;    // 调用Class方法 途中会触发事件    _da ImportData();   }   // 事件处理程序   private void DA_EnterNewLine(object sender long lineNumber)   {    //   }

lishixinzhi/Article/program/net/201311/15559

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式