一切福田,不離方寸,從心而覓,感無不通。

Category Archives: C#

WPF中的Timer与DispatcherTimer的区别与应用

WPF / Silverlight中的 Timer 与 DispatcherTimer 有什么区别呢? 这里我给大家简单介绍一下他们在使用和实现上的区别。 在一个应用程序中,Timer会重复生成time事件,而DispatcherTimer是一个集成到了Dispatcher队列中的时钟,这可以使它被按照指定的时间间隔以指定的priority定期执行。 对于一个Timer时钟事件,系统并不能保证在时间间隔到达后被立即执行,但是能够确保在时间间隔到达之前不被执行。这是因为DispatcherTimer像其他操作一样被放置在了Dispatcher队列中。何时执行DispatcherTimer事件依赖于队列中的其他任务以及他们的优先级. 如果一个WPF应用程序使用了Timer时钟,那么它的事件必须在一个单独的时钟线程中运行,而不是在UI线程中,这对于WPF应用程序毫无用处——你没法在UI线程之外直接访问UI元素,而只能通过Invoke或者BeginInvoke将操作发送给Dispatcher 对象,委托Dispatcher去执行UI操作。 看到这里,你大概知道了为什么我们在WPF中应该用DispatcherTimer而不是Timer了:DispatcherTimer与Dispatcher运行于同一个线程中——UI线程,而且具有相同的DispatcherPriority优先级。 所以,在WPF/Silverlight应用中,正确的做法如下所示:

参考:http://www.roboby.com/the_different_bitween_timer_and_dispatchertimer_in_wpf.html

龙生   01 Mar 2016
View Details

Java、C#双语版配套AES加解密示例

这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己,正巧遇上需要AES加解密的地方了,而且还是Java和C#间的相互加解密操作,这里做个备忘 这里采用的加解密使用base64转码方法,ECB模式,PKCS5Padding填充,密码必须是16位,否则会报错哈 模式:Java的ECB对应C#的System.Security.Cryptography.CipherMode.ECB 填充方法:Java的PKCS5Padding对应C#System.Security.Cryptography.PaddingMode.PKCS7 Java和C#版的加解密是互通的,也就是能相互加解密,编码明确指定了采用UTF-8,有需要其他编码方法的请自行扩展 Java版

C#版

from:http://www.cnblogs.com/lzrabbit/p/3639503.html

龙生   18 Feb 2016
View Details

C#实现动态生成Word

1. 一个控制台例子,实现动态生成Word。 首先,添加引用:COM->Microsoft Word 11.0 Object Library。

2. 介绍几篇牛人写的关于操作Word的文章 [分享]一段导出到word模版的代码 http://www.cnblogs.com/goody9807/archive/2005/08/25/222526.html 再谈word2003编程 http://www.cnblogs.com/Andmm/archive/2008/06/18/1224422.html 最近一直在做C#操作office方面的工作!总结一下!Word(二) http://www.cnblogs.com/wngwz/archive/2004/08/19/34678.html C#也能动态生成Word文档并填充数据 http://www.cnblogs.com/qyfan82/archive/2007/09/14/893293.html from:http://www.cnblogs.com/tianzhiliang/archive/2011/07/07/2099800.html

龙生   02 Feb 2016
View Details

C#也能动态生成Word文档并填充数据

引用http://blog.csdn.net/mengyao/archive/2007/09/13/1784079.aspx using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using Microsoft.Office.Interop.Word; namespace WindowsApplication4 {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }         private void button1_Click(object sender, EventArgs e)         {             CreateWordFile("c:\\dd.doc");         }         public string CreateWordFile(string CheckedInfo)        {             string message = "";             try             {                 Object Nothing = System.Reflection.Missing.Value;                 Directory.CreateDirectory("C:/CNSI");  //创建文件所在目录                 string name = "CNSI_" + DateTime.Now.ToLongDateString()+".doc";                 object filename = "C://CNSI//" + name;  //文件保存路径                 //创建Word文档                 Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.ApplicationClass();                 Microsoft.Office.Interop.Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);                 //添加页眉                 WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;                 WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;                 WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[页眉内容]");                 WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;//设置右对齐                 WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出页眉设置                 WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//设置文档的行间距                 //移动焦点并换行                 object count = 14;                 object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行;                  WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点                  WordApp.Selection.TypeParagraph();//插入段落                  //文档中创建表格                  Microsoft.Office.Interop.Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);                  //设置表格样式                  newTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleThickThinLargeGap;                  newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;                  newTable.Columns[1].Width = 100f;                  newTable.Columns[2].Width = 220f;                  newTable.Columns[3].Width = 105f;                  //填充表格内容                  newTable.Cell(1, 1).Range.Text = "产品详细信息表";                  newTable.Cell(1, 1).Range.Bold = 2;//设置单元格中字体为粗体                  //合并单元格                  newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));                  WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中                  WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中                                           //填充表格内容                  newTable.Cell(2, 1).Range.Text = "产品基本信息";                  newTable.Cell(2, 1).Range.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorDarkBlue;//设置单元格内字体颜色                  //合并单元格                  newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));                  WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;                   //填充表格内容                   newTable.Cell(3, 1).Range.Text = "品牌名称:";                   newTable.Cell(3, 2).Range.Text = "BrandName";                   //纵向合并单元格                   newTable.Cell(3, 3).Select();//选中一行                   object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdLine;                   object moveCount = 5;                   object moveExtend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;                    WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);                    WordApp.Selection.Cells.Merge();                    //插入图片                    string FileName = @"c:\picture.jpg";//图片所在路径                    object LinkToFile = false;                    object SaveWithDocument = true;                    object Anchor = WordDoc.Application.Selection.Range;                    WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);                     WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//图片宽度                     WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//图片高度                     //将图片设置为四周环绕型                     Microsoft.Office.Interop.Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape(); […]

龙生   02 Feb 2016
View Details

C# Stream 和 byte[] 之间的转换

一. 二进制转换成图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); this.pictureBox1.Image 二. C#中byte[]与string的转换代码 1、System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding(); byte[] inputBytes =converter.GetBytes(inputString); string inputString = converter.GetString(inputBytes); 2、string inputString = System.Convert.ToBase64String(inputBytes); byte[] inputBytes = System.Convert.FromBase64String(inputString); FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); 三. C# Stream 和 byte[] 之间的转换 /// 将 Stream 转成 byte[] public byte[] StreamToBytes(Stream stream) {     byte[] bytes = new byte[stream.Length];     stream.Read(bytes, 0, bytes.Length);     // 设置当前流的位置为流的开始     stream.Seek(0, SeekOrigin.Begin);     return bytes; } /// 将 byte[] 转成 Stream public Stream BytesToStream(byte[] bytes) {     Stream stream = new […]

龙生   02 Feb 2016
View Details

Linq To EF 使用小知识(添加记录后获取添加的自增ID和叫“ID”的列不是自增列不让插入的问题)

1:添加记录后,如何获取新添加的ID的值 比如,一个实体 TestEntity   对应一个表TestEntity(ID主键自增,Name,age),使用linq to ef   添加一条记录后,如何获取新记录的ID值?如下代码:

调用SaveChanges()之后,ef.ID的值就是数据库中新加记录对应自增标识列的值。Linq to ef智能地判断出ID就是自增主键标识列。 他给我们返回了。 2:列名叫“ID”的列,它不是自增列,linq to ef不让插入的问题 如标题,就是,列名叫“ID”的列,它不是主键,也不是主键,linq to ef不让插入。我已经给ID赋值了 但它一直提示 ID不能为NULL  ,打断点,看了,也有值! 代码走到SaveChanges(),就报异常,提示ID不能为空!超蛋疼… 原因:默认情况,linq to ef认为只要实体类中有ID属性,数据库对应的是一定是自增标识列。 解决方式: 1)第一步 因为EFDbContex继承自Context类,所以,我们需要从新对它这个叫OnModelCreating的虚函数进行实现

  2)第二步 在实体类叫ID的属性上加标记实现(记得添加引用):

  from:http://www.ithao123.cn/content-2766171.html

龙生   04 Jan 2016
View Details

Linq中使用Left Join

准备一些测试数据,如下:   use Test Create table Student( ID int identity(1,1) primary key, [Name] nvarchar(50) not null ) Create Table Book( ID int identity(1,1) primary key, [Name] nvarchar(50)not null, StudentID int not null ) insert into Student values('张三') insert into Student values('李四') insert into Student values('王五') select * from student --张三借的书 insert into Book values('红楼',1) insert into Book values('大话红楼',1) --李四借的书 insert into Book values('三国',2) --王五没借书 --一本错误的记录 insert into Book values('错误时怎样练成的',111) --左连接 select s.name,b.name from student as s left join Book as b on s.id=b.studentid --右连接 select s.name,b.name from student […]

龙生   29 Dec 2015
View Details

C#.net 好用的验证码代码 汉字-变色-扭曲-波动

using System; using System.Data; using System.Configuration; using System.Collections; using System.Drawing; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class study_CheckCode2 : System.Web.UI.Page {    protected void Page_Load(object sender, EventArgs e)    {        string code = CreateVerifyCode();                //取随机码        CreateImageOnPage(code, this.Context);       // 输出图片        Response.Cookies.Add(new HttpCookie("CheckCode", code.ToUpper()));// 使用Cookies取验证码的值    }    #region 验证码长度(默认4个验证码的长度)    int length = 4;    public int Length    {        get { return length; }        set { length = value; }    }    #endregion    […]

龙生   28 Dec 2015
View Details

C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值

C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 总结: 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach (PropertyInfo pi in t.GetProperties {     object value1 = pi.GetValue(tc, null));//用pi.GetValue获得值     string name = pi.Name;//获得属性的名字,后面就可以根据名字判断来进行些自己想要的操作     //获得属性的类型,进行判断然后进行以后的操作,例如判断获得的属性是整数    if(value1.GetType() == typeof(int))    {        //进行你想要的操作    } } 注意: 必须要设置了get 和set方法的属性,反射才能获得该属性  public int Pid   {      get { return pid; }      set { pid = value; }   } from:http://virgoooos.iteye.com/blog/623561

龙生   28 Dec 2015
View Details
1 28 29 30 47