using System;using System.Windows.Forms;public class frmMain : Form{ #region Windows Code private void InitializeComponent() { this.SuspendLayout(); // // frmMain // this.ClientSize = new System.Drawing.Size(648, 475); this.Name = "frmMain"; this.Load += new System.EventHandler(this.frmMain_Load); th...
最近在做网站自动登陆小工具,遇到技术屏障。密码在submit时会使用js进行加密。这时我需要模拟这个加密过程,想到使用C#执行javascript代码。对于执行javascript代码,纯代码方式使用如下两种方式。1、Google Chrome V8引擎Google Chrome V8引擎在.NET上的封装,功能完善,性能相对较高。地址: http://javascriptdotnet.codeplex.com/using Noesis.Javascript;
using System;
using System.Collections.Generic;namespace JsCSharp...
using System;using System.Collections.Generic;using System.Text;using Microsoft.Office.Interop.Word;using System.IO;using System.Web;using System.Data;using System.Reflection;using Microsoft.Win32;using System.Text.RegularExpressions;using System.Net;namespace OfficeOperate{ public class WordOperate { #region 动态生成Word文档并填充数据 /// /// 动态生成Word文档并填充数据 ...
[S] Single Responsibility Principle (单一职责原则)认为一个对象应该仅只有一个单一的职责 namespace SingleResponsibilityPrinciple
{class DataAccess{void InsertData(){Console.WriteLine("数据插入成功");}// 错误的设计,不符合 单一职责原则//void WriteLog()//{// Console.WriteLine("日志插入成功");//} }// 应该把不同的职责交给不同的对象处理class Logger{void WriteLog(){Console.WriteLine("日志插入成功"...
1. 使用VS2013编译你要打包的程序,会在文件夹中的 ..\bin\Release中2. 点击VS2013中的TOOLS -> PreEmptive Dotfuscator and Analytics : 打开的界面如下图: 3. 选择需要混淆的文件,一般只需要混淆 *.Dll 或 *.exe文件, 点击界面中的 Inputs -> Inputs框下的 + 号 -> 在你程序中的Release文件夹中选择需要混淆的文件 4. 为了方便下次混淆,建议勾上覆盖已存在的文件,如下图: 5. 然后保存文...
这次的任务是在winform建立一个表格,表格第一列需要绑定数据,表格的第一行也需要绑定数据,而其他的单元格数据则是根据对应的行数据和列数据进行提取。询问过后,需要在后台拼接HTML代码实现这个功能。就我这个新手加菜鸟而言,winform如何去读取HTML代码都是一个问题。经过一个上午的努力,终于迈向了第一步——winform读取HTML代码并显示方法:用webBrowser控件去读取HTML,用webBrowser1.DocumentText属性显示。OK,其实的方法...
代码生成器进行了改进,针对Oracle数据库生成更优美的代码。这样生成出来的代码,更像微软的风格,更像C#.NET的标准规范,阅读起来也更优美。把Oracle表字段名默认大写, 有_分割等进行了优化,这样用我们代码生成器生成的代码,阅读起来,更顺眼。更能拿得出手了。代码生成器生成代码效率高、规范性强、错误少、质量可靠。EF 生成的 Oracle 底层数据库的SQL语句性能不能有保障、在大并发大用户时会有很多不确定因素、甚至优化起来...
建议154:不要过度设计,在敏捷中体会重构的乐趣有时候,我们不得不随时更改软件的设计:如果项目是针对某个大型机构的,不同级别的软件使用者,会提出不同的需求,或者随着关键岗位人员的更替,需求也会随个人意志有所变更。如果竞争对手增加了新需求,我们也不得不为正在研发的新产品调整设计方案。刚开始的架构太糟糕了,这可能源于设计经验的不足或者架构师的不负责任。以上分别从外部和内部描述了必须修改需求和设计的几种场景...
建议83:小心Parallel中的陷阱Parallel的For和ForEach方法还支持一些相对复杂的应用。在这些应用中,它允许我们在每个任务启动时执行一些初始化操作,在每个任务结束后,又执行一些后续工作,同时,还允许我们监视任务的状态。但是,记住上面这句话“允许我们监视任务的状态”是错误的:应该把其中的“任务”改成“线程”。这,就是陷阱所在。我们需要深刻理解这些具体的操作和应用,不然,极有可能陷入这个陷阱中去。下面体会这段...
20. Valid Parentheses有效的括号解题思路将括号比较后者后,不同的入栈,相同的出栈,最后字符串遍历结束后栈为空则匹配成功。publicbool IsValid(string s) {//声明字典,括号匹配键值对Dictionary<char, char> dict = new Dictionary<char, char>();dict.Add(‘)‘, ‘(‘);dict.Add(‘]‘, ‘[‘);dict.Add(‘}‘, ‘{‘);Stack<char> stack = new Stack<char>();//遍历字符s,直到遍历s所有字符结束循环for (int i = 0; i < s...
一般控件 TextBoxX3.Invoke(//委托,托管无参数的任何方法new MethodInvoker(delegate{TextBoxX3.AppendText("烧录耗时:" + span.ToString()+ "下载成功");}));原文:https://www.cnblogs.com/icaowu/p/12133380.html
用智能的编译器来防错本章的主要内容:自动实现的属性:编写由字段直接支持的简单属性, 不再显得臃肿不堪;隐式类型的局部变量:根据初始值推断类型,简化局部变量的声明;对象和集合初始化程序:用一个表达式就能创建和初始化对象;隐式类型的数组:根据内容推断数组的类型,从而简化数组的创建过程;匿名类型:允许创建新的临时类型来包含简单的属性;自动实现的属性这个特性简单的我都不想描述,但是为了保持内容的完整性,放一...
开时始,得到的中文文件中的字符是乱码的,鸟符号看的头晕。于是就细究streamreader读取的编码格式,默认的编码是ascii,单字节的,就尝试utf8,乱码;尝试gb2312,OK! 可另一个问题又出现了,得到的两个文件的行数都不到1500行,尝试N次还是不行,很郁闷。google了下,看到try catch,就想到释放缓冲区,结果很HAPPY! 复制代码 代码如下:private static void FnFileProcess() { StreamReader reader = new StreamReader(@"d:\15...
转载自:http://blog.skydev.cc/对系统模拟按键方面的知识和按键映射代码做了一下梳理,在这里分享出来,适用于开发自动操作工具和游戏外挂。主代码:public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key click flagpublic const int KEYEVENTF_KEYUP = 0x0002; //Key up flag[DllImport("user32.dll")]private static extern void keybd_event(byte bVk, byte bSCan, int dwFlags, int dwExtraInfo);[DllImport("user32.dll"...
在使用编写完成的用户控件时,有时会现理某某属性代码生成失败,程序集未标记为可序列化,解决方法参考另一位博主写的很好的点击打开链接我按照上面做还是没能解决问题,然后我想了一下,还要做如下工作1、清理项目2、重新添加项目间引用(如果需要)3、删除该用户控件所在项目的bin和obj目录4、关闭VS,重新生成大功告成!非常感谢 点击打开链接版权声明:本文为博主原创文章,未经博主允许不得转载。原文:http://blog.csdn.net/blo...