c#常用编程方法 (二)

使用c#完成一个聊天工具的学习过程 2 整改之前的代码,选择mvc模式。   <Window x:Class="ChatTools.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"... 阅读详情

28.有些数据字段在程序控制中一般以1,2,3,4..等等进行判断,但是为了增强程序的易读性,需要使用enum将其所代表的意思表达出来,
可以单独做一个类来实现这个功能
如:
  namespace enumDemo
  {
    public enum RightEnum
 {
   //组,用户,角色维护
   GroupEdit=1,
   //功能项维护
   FunctionEdit=2,
   //权限点维护
   RightEdit=3,
 }
  }
引用时,直接用RightEnum.GroupEdit即代表1,这样会使程序更清晰。
29.弹出页返回时对上级页界面控件的编程
   dialogArguments.document.all.txtOriginRecord.value="none";
30.在单元格中检索按钮的onmouseover onmouseout事件的编程:
<TD align="right"><INPUT class="smbuttonStyle" id="Submit1" onmouseover="blackFont(this)";" onmouseout="whiteFont(this);"
type="submit" value="检索" name="submitb" runat="server" ></TD>
脚本程序:
function blackFont(param){
var blackVar = '#000000';
 try
 {
  if(!document.layers){
   param.style.color=blackVar;
  }
 }
 catch(e)
 {}
}
31.几种常用的快捷键
   Ctrl+A:全选
   Ctrl+S:保存
   Ctrl+F:查找
   Ctrl+Z:撤销
   F5:启动调试
   F10:单步调试,不进入下级函数体
   F11:单步调试,进入下级函数体
   F7: 页面和后台代码页的切换
   F1:帮助
32.获取服务器上虚拟应用程序根路径: Context.Request.ApplicationPath
   例如在web项目test下有一个Default1.aspx和一个Default2.aspx页面
   则从Default1.aspx跳转到Default2.aspx的代码为:
   Response.Redirect(Context.Request.ApplicationPath+"Default2.aspx");
33.一个实用的加密函数
     public static string Encrypt(string pToEncrypt, string sKey)
  {
   DESCryptoServiceProvider des = new DESCryptoServiceProvider();
   //把字符串放到byte数组中
   byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt); 

   //建立加密对象的密钥和偏移量
   //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
   //使得输入密码必须输入英文文本
   des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
   des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
   MemoryStream ms = new MemoryStream();
   CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
   //Write  the  byte  array  into  the  crypto  stream
   //(It  will  end  up  in  the  memory  stream)
   cs.Write(inputByteArray, 0, inputByteArray.Length);
   cs.FlushFinalBlock();
   //Get  the  data  back  from  the  memory  stream,  and  into  a  string
   StringBuilder ret = new StringBuilder();
   foreach(byte b in ms.ToArray())
   {
    //Format  as  hex
    ret.AppendFormat("{0:X2}", b);
   }
   ret.ToString();
   return ret.ToString();
  }
34.一个解密字符串:
   public static string Decrypt(string pToDecrypt, string sKey)
  {
   DESCryptoServiceProvider des = new DESCryptoServiceProvider();

   //Put  the  input  string  into  the  byte  array
   byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
   for(int x = 0; x < pToDecrypt.Length / 2; x++)
   {
    int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
    inputByteArray[x] = (byte)i;
   }

   //建立加密对象的密钥和偏移量,此值重要,不能修改
   des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
   des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
   MemoryStream ms = new MemoryStream();
   CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
   //Flush  the  data  through  the  crypto  stream  into  the  memory  stream
   cs.Write(inputByteArray, 0, inputByteArray.Length);
   cs.FlushFinalBlock();

   //Get  the  decrypted  data  back  from  the  memory  stream 
   //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
   StringBuilder ret = new StringBuilder();

   return System.Text.Encoding.Default.GetString(ms.ToArray());
  }
35.程序中加密调用:Person.PerPwd = Security.Encrypt(this.PerPwd.Text, "&!#-?,:*");
   采用这种方法可以把加密后的字符串保存到数据库中,即使有人看到数据库也是一个加密后的字符串,增强了系统的安全性。
36.HTML页面中引用.css文件
     <LINK href="../css/main.css" type="text/css" rel="stylesheet">
     注意"../"的写法如果要引用css的页面为A页面,则../表示A页面的上一级目录
37.StringBuilder的用法
   StringBuilder sb=new StringBuilder();
   sb.Append("1=1");
   if(this.SearchValue.Text!="")
{
   sb.AppendFormat("and {0} like '%{1}%'",this.SearchType.SelectedValue,this.SearchValue.Text);
}
38.判断一个字符串是否属于另一个字符串一部分
   string temp="chinese";
   int flag=temp.IndexOf("ese")
   则 flag=4 ("ese"字符串在temp中的位置)
   如果 int flag=temp.IndexOf("iceworld");
   则 flag=-1("iceworld"不属于temp字符串的一部分)
39.获取与服务器上虚拟路径相对应的物理文件路径
   string s1=DateTime.Now.ToString("yyyyMM"); (200612)
   string s2=DateTime.Now.ToString("dd");  (29)
   path=Server.MapPath("/book/upload/"+s1+"/"+s2);
   if(!Directory.Exists(path))
{
  DirectoryInfo di=Directory.CreateDirectory(path);
}
40.再编程中可能会出现错误,不同的错误提示的信息不同,有些很难懂,我们可以在一个类中专门对一些常见的错误进行处理。
   如在ExceptionHandler类中定义这个的函数
   pullic static string DealError(string errmsg)
   {
    if(errmsg.IndexOf(Index was outside the bounds of the array.">=0)
    {
     return "数组超界,请检查!";
    else if( errmsg.IndexOf("There is no row at position 0")>=0)
    {
     return "第0行没有数据!";
    }
    }
   }
   这样在程序中为了方便读取异常信息,可以这样写
   string result=semiManage.Update();
   Response.Write("<script>alert('"+ExceptionHandler.DealErrorMsg(result)+"')</script>");
41.对于一些公用的函数,我们可以也单独建一个类进行集中处理
   1.安全转换字符串为数字
   public static decimal ConvertToNum(object obj)
 {
  try
  {
   return Convert.ToDecimal(obj);
   }
   catch
   {
    return 0;
   }
 }
    2.格式化数字
    public static string FormatDecimal(string NumString)
   {
    try
     {
       decimal tempvalue=Convert.ToDecimal(NumString);
       return tempvlue.ToString("0.####");
     }
     catch
     {
       return "";
      }
    }
    3.格式化日期
    public static string FormatDate(string DateString)
    {
     try
      {
      DateTime tempvalue=Convert.ToDateTime(DateString);
      return tempvalue.ToString("yyyy-MM-dd");
      }
      catch
      {
 return "";
      }
    }
    4.格式化字符串函数
    public string FormatString(string str)
    {
    if(str!=null)
    {
     str=str.Trim();
     str=str.Replace("'","’")
     str=str.Replace("|","");
    }
    return str;
   }
    5.检查字符串是否是合法数字
    public static bool IsNumber(string NumString)
    {
     return Regex.IsMatch(NumString,"^//d+(?://.//d+)?$");
    }
    其中Regex属于System.Text.RegularExpressions这个命名空间
42.为了系统安全,用户长时间不使用系统以致session过期时,需要重先登陆才能继续使用系统
   可以让每个页面继承一个基类BasicPage,基类中进行如下编码
   protected override void OnInit(EventArgs e)
   {
     base.OnInit(e);
     this.Load+=new System.EventHandle(this.MainPage_Load);
   }
   private void MainPage_Load(object sender,System.EventArgs e)
   {
    if(Context.User.Identity.IsAuthenticated)
    {    
    }
    else
    {
     Response.Redirect("~/Login.aspx");
    }
   }
43.在类的组织中,如果有些类有公用的一些方法,可以抽象出一个基类,让其它类都继承这个基类,也可以再为基类定义一个接口,
便于实现多重继承;简单介绍一下一种多重继承方法。
A基类--A接口--A类
A基类--B接口--B类
AB类: A基类,A接口,B接口
注意在AB类的构造函数中需要实例化A,B两个类,则可以调用AB中的方法。
44.验证一个TextBox(例如名字为txtName)为必须输入或者限定其某种输入格式的方法
添加一个RegularExpressionValidator,然后指定其ControlToValidate的属性为txtName,
ErrorMessage显示如果输入出错时提示的信息;validationExpression属性如果不填,将对输入是否为空进行校验;
如果输入一个正则表达式,则如果输入格式有误,会提示错误信息。
45.对用户输入的字符串进行加密
 string password=FormsAuthentication.HashPasswordForStoringInConfigFile(this.Password.Text,"MD5");
 其中 FormsAuthentication类属于System.Web.Security命名空间。
46.DataGrid中删除一条记录时,要实现立即刷新并且有相应删除提示(下边为Favorite.aspx页面的部分html代码)
   可以增加一个模版列
   <asp:TemplateColumn HeaderText="修改">
      <ItemStyle HorizontalAlign="Center"></ItemStyle>
   <ItemTemplate>
   <asp:HyperLink NavigateUrl='<%# "/Company/Chance/Favorite.aspx?type=DEL&Info_ID="+DataBinder.Eval(Container.DataItem,"Info_ID") %>' Runat="server" ID="Hyperlink1">
   删除
   </asp:HyperLink>
      </ItemTemplate>
   </asp:TemplateColumn>
然后在后台进行处理
if(Request.QueryString["type"].ToUpper() == "DEL")
this.DelFavorite();
在DelFavorite()函数中通过int Info_ID = Int32.Parse(this.operate.FormatString(Request.QueryString["Info_ID"].ToString()));
获取的ID就能够删除这一条记录并给出相应提示信息。
47.
Request.ServerVariables("Path_Info")
客户端提供的路径信息
Request.ServerVariables("Remote_Addr")
发出请求的远程主机的IP地址
Response.Redirect(Request.ServerVariables["PATH_INFO"]);
通过上面这种方式可以实现刷新本页面功能。
48.cs结构程序中的假进度条
   在主要处理函数开始处定义
   int roll=0;
   在主函数处理环节中
    if(roll%2==0)
    {
     this.ProgressBar(5000);
    }
    结尾处
    roll++;
    if(roll==100)
    {
      roll=0;
    } 
    private void ProgressBar(int count)
 {
  progressBar.Value=1;
  progressBar.Minimum=1;
  progressBar.Maximum=count;
  for(int step=1;step<count;step++)
  {
   progressBar.Value =step;
  }
 }
    这样主函数每执行两遍,会将进度条滚动一次,提示用户程序正在处理中。
49.从xml中取出相应信息(bak.config)
   <?xml version="1.0"?>
<ProjectConnection>
  <Project name="源数据库" select="true" remark="">
    <BasiceData>server=10.210.5.184;database=cgHott;uid=cghot;pwd=5656;Pooling=true;Max Pool Size=10;Min Pool Size=0;Connection Lifetime=300;packet size=1000</BasiceData>
    <BasiceData>server=10.210.5.154;database=cgHott;uid=cghot;pwd=565;Pooling=true;Max Pool Size=10;Min Pool Size=0;Connection Lifetime=300;packet size=1000</BasiceData>
  </Project> 
</ProjectConnection>
后台cs代码
  System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
 doc.Load("bak.config");
 System.Xml.XmlNode root = doc.DocumentElement;
 System.Xml.XmlNode target = root.SelectSingleNode("descendant::Project[@name='源数据库']");
 strChecked = target.Attributes["select"].Value;
 string strCon=target.ChildNodes[0].InnerXml;
则能够取到  strCon="10.210.5.184;database=cgHott;uid=cghot;pwd=5656;Pooling=true;Max Pool Size=10;Min Pool Size=0;Connection Lifetime=300;packet size=1000"
50.向xml文件中写入数据
strData为需要写入的字符串
 System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
 doc.Load("bak.config");
 System.Xml.XmlNode root = doc.DocumentElement;
 System.Xml.XmlNode target = root.SelectSingleNode("descendant::Project[@name='源数据库']");  
 if( target != null )
  {
   target.ChildNodes[0].InnerXml = strData;        
   System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter("bak.config",null);
   writer.Formatting = System.Xml.Formatting.Indented;
   doc.Save(writer);
   writer.Close();    
  }  

  

归纳c#编程常用的绘图类方法 C#中使用GDI+,一种图形设备接口用来对绘图操作进行处理。GDI+可以对维矢量图形,图像,文字显示提供相关的类给编程人员使用。具体一点讲,对维矢量图形提供了存储图形基元自身信息的类(或结构体)、存储图形基元绘制方式信息的类以及实际进行绘制的类;对图像的处理提供了Bitmap,Image等类来显示操作保存不同格式的图像;GDI+支持各种字体字号样式显示文本。 GDI+用Graphics类来实... 阅读详情

相关推荐

C#常用数据操作方法详解

在这篇文章中,我们将一探究竟,看看如何使用String类、Math类和Array类的一些常用方法来简化我们的代码和提高效率。在C#的储藏室里,集合操作、文件处理、网络服务访问、多线程处理等等方面都有相应的类和方法,可以帮助你的代码更高效、更简洁、也更加强大。版本的不断更新迭代,微软也在不断地增加更多新颖且有帮助的工具和方法来丰富我们的开发工具箱。掌握这些基本工具的同时,随时留意新的变化和添加,将有助于保持你的技能前沿和竞争力。方法允许我们对序列中的每个元素应用一个函数,并返回一个包含结果的新序列。

2401_82410658的博客 2923

C#编程基础第一课:C#.NET框架、VS软件基本使用、编写第一个C#程序

1、.NET平台和C#语言 .NET 是微软公司推出的平台开发环境 C#(C Sharp)是一种强大的、面向对象的程序开发语言,是专为 .NET 开发而设计出的语言。 2002年微软发布了.NET框架的第一个版本,是一种比MFC和COM编程技术更一致面向对象的环境。.NET的优点:多平台(可以在各种计算机上运行,从服务器、桌面机到PDA,还能在移动电话上运行)、行业标准(使用行业标准的通信协...

王迪 1万+

C#做上位机常用英语单词

NET Framework为我们开发的各种程序提供了各种库,节省开发时间,提升开发效率,版本从1.0到4.9...编写程序的集成开发环境,简称VS,它可以写代码,编译代码,调试代码和发布程序。C#读作C Sharp,表示这是开发语言中的一个利器。用来管理 类 ,就好比我们国内的省市区县一样的划分。通常用来取消正在执行的任务,比如线程中经常使用。通常表示控件或某些图像的宽度,一般是像素单位。通常表示控件或某些图像的高度,一般是像素单位。通常表示当前这个对象,后面会接对象的属性或方法

guangxying的博客 992

C#中 += (s, e) => 这些字符什么意思

public MainWindow(){InitializeComponent();this.Loaded += (s, e) => DiscoverKinectSensor();this.Unloaded += (s, e) => this.kinect = null;} 在上面的代码中,+=是在委托链上增加一个委托,(s,e) =>是一个lambda表达式,这个表达式创建一...

weixin_34356555的博客 1574

C#编程基础SqlConnection类的作用以及常用方法

C#的数据库编程中,SqlConnection类主要用于连接Sqlserver数据库,使用SqlConnection类的实例方法我们可以打开Sqlserver数据库连接以及获取数据完毕后关闭数据库连接等操作,此文将介绍SqlConnection类的一些常用属性以及方法。 一、SqlConnection类常用属性 ConnectionString :获取或设置用于打开 SQL Server 数据库的字符串。一般针对于asp.net网站来说,此数据库连接字符串会配置在web...

ba_wang_mao的专栏 2万+

C#常用集合及其常用方法与区别

C#提供了多种集合类型,每种集合都有其独特的特点和适用场景。数组:固定大小,类型一致,适合快速访问。列表:动态大小,类型一致,适合动态调整。字典:键值对存储,键唯一,适合快速查找。队列:先进先出,动态大小,适合顺序处理。栈:后进先出,动态大小,适合逆序处理。通过掌握这些集合的使用方法和特点,可以更好地选择合适的集合类型,以满足不同的编程需求。

2401_83347734的博客 1310

Revit开--常用方法封装

Revit开–常用方法封装 在唐僧课堂(http://bimdp.ke.qq.com) 常用的封装方法。 很多工程专业转Revit次开发的朋友,对一些重复使用的方法通常采用粘贴复制的做法,这样做很浪费时间。其实在C#编程语言中有丰富的方法来实现我们重用代码的目的,而不必使用粘贴复制的方式。以下举简单的两个例子。 1.封装元素获取的方法 public static class Extension...

binbinstrong的博客 2016

C#界面编程

C#界面设计常用的窗口控件属性如下:Name属性:每一个控件都有一个Name(名字)属性,在应用程序中,可通过此属性来引用这个控件。C#会给每个新添加的控件指定一个默认名。在应用程序设计中,可根据需要将控件的默认名字改成更有实际代表意义的名字。自己的理解:Name就相当于MFC的IDAnchor属性: Anchor的意思是“锚”,那么Anchor属性是用来确定此控件与其容器控件的固定关系的。当父控...

yuanxue_vaq的博客 6881

C# FileInfo类的使用方法常用操作(附代码示例)

FileInfo类是位于System.IO命名空间中的一个类,它提供了一系列用于操纵文件的属性和方法。通过FileInfo类,我们可以轻松获取有关文件的信息,如文件大小、创建日期、修改日期等。此外,FileInfo类还提供了一些便捷的方法,来进行文件复制、移动、删除等操作。创建FileInfo对象获取文件属性信息文件操作:复制、移动和删除文件判断文件是否存在FileInfo类为C#编程中的文件操作提供了强大的功能。通过灵活运用FileInfo类的方法和属性,我们可以轻松地管理和操作文件。

故事不长丨的博客 6943

C#编程基础SqlCommand类的作用以及常用方法

C#的数据库操作过程中,SqlCommand类一般用于Sqlserver数据库的SQL语句的执行,包括Select语句、Update语句、Delete语句以及SQL存储过程等,SqlCommand的操作一般在SqlConnection类成功连接Sqlserver数据库后,并使用SqlConnection类的Open方法打开数据库连接后进行的,一般操作完数据库,建议调用SqlConnection类的Colse方法关闭数据库。 一、SqlCommand类常用属性 Comma...

ba_wang_mao的专栏 5860

C# LINQ常用操作方法——提升你的编程效率

C# LINQ是一个强大而灵活的查询工具,它能够显著提高开发人员的编程效率。本文介绍了一些常用的LINQ操作方法,从基础的查询操作到更复杂的进阶操作,希望能帮助你更好地应用LINQ进行数据查询与处理。通过灵活运用这些操作方法,你能够更快速、简洁地处理各种数据操作需求。对于那些有大量数据处理需求的开发人员来说,LINQ是不可或缺的工具。MSDN文档:https://docs.microsoft.com/en-us/dotnet/api/system.linq.queryable?

故事不长丨的博客 3832

C#集合 Stack 中常用方法和属性

C# Stack ()是常见的数据结构之一,栈是一种先进后出的结构,即元素从栈的尾部插入,从栈的尾部移除,类似于日常生活中搬家的时候装车,先装上车的东西要后拿下来。 Stack 类提供了 3 种构造方法,如下表所示。 构造方法 作用 Stack() 使用初始容量创建 Stack 的对象 Stack(ICollection) 创建 Stack 的实例,该实例包含从指定实例中...

星期一兴起 1641

C# String 常用操作方法详解

C# String 常用操作方法详解

鲤籽鲲的博客 2755

C#编程核心:函数与方法实战指南

本文还有配套的精品资源,点击获取 简介:C#作为广泛应用于多个平台的编程语言,以其简洁性、类型安全和面向对象的特性而备受开发者青睐。本指南深入探讨了C#编程常用的函数和方法,覆盖字符串操作、集合处理、条件判断、异常处理、类与对象、泛型、委托与事件、LINQ查询和异步编程等关键概念。这些内容是每个C#开发者必须掌握的基础,并为编写高效、可维护的代码打下坚实基础。 1....

weixin_42146230的博客 728

C#几种截取字符串的方法

本文介绍了几种常用C#字符串截取方法,包括使用Substring方法、Split方法、Substring和IndexOf方法以及使用Regex类。根据具体的需求,我们可以选择合适的方法来截取字符串,并灵活应用于实际编程中。除了这些常见的方法,你还可以根据实际情况进行拓展和扩展,进一步丰富自己的字符串处理能力。不断学习和实践,掌握更多的技巧和方法,将有助于提高你的编程技能和效率。

故事不长丨的博客 2万+

halcon与c#联合编程方法

一、VS引用halcondotnet.dll后直接编程 但是如果你不是大牛会存在非常严重的内存泄漏问题,极其不推荐这样做。 、用Halcon编好程序后导成C# 然后导出.cs为后缀的c#程序,主函数在Action方法里。 但是这种方法最然简便,但是偶尔也会在程序编译正确的情况下运行报错。 三、用Halcon引擎 虽然较上面的办法速度可能相对慢一些,不过稳定性大大提升而且运行速度也还可以。 首先先引用这两样东西,它在Halcon安装目录下。例如:E:\Halcon12\bin\dotnet

qq_48705696的博客 3209

C#中Socket通信常用方法

实例,指定协议类型和套接字类型。: 如果你的服务端需要绑定到特定的端口和IP地址,你可以使用。类可以实现网络通信。方法接受连接,这将返回一个新的。: 一旦建立了连接,就可以使用。: 完成通信后,应该关闭。: 对于客户端,使用。

愿你历尽千帆,归来仍是少年。 2093
上一篇: c#常用编程方法 (一)
下一篇: c#常用编程方法 (三)
acefly
博客等级 码龄19年 3粉丝 14原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值