代码片段:通过编程方式压缩.accdb文件

在VB.Net安装有VSTO的前提下,引用Microsoft.Office.Interop.Access.Dao

实现代码如下:

Imports Microsoft.Office.Interop.Access.Dao

Module Module1

  Sub Main()
    Dim db As New DBEngine
    db.CompactDatabase("H:\My Documents\算神.accdb", "H:\My Documents\算神1.accdb")
    Console.Read()
  End Sub

End Module

C#转义字符汇总

\'  单引号
\a  感叹号
\"  双引号
\b  退格
\\  反斜杠
\f  换页
\r  回车
\t  水平方向tab
\n  换行
\v  垂直方向tab
\0  空字符

.Net中的String.Intern 方法

公共语言运行时通过维护一个表来存放字符串,该表称为“暂存池”,它包含程序中以编程方式声明或创建的每个唯一的字符串的一个引用。 因此,具有特定值的字符串的实例在系统中只有一个。

例如,如果将同一字符串分配给几个变量,运行时就会从暂存池中检索对该字符串的相同引用,并将它分配给各个变量。

Intern 方法使用暂存池来搜索与 str 值相等的字符串。 如果存在这样的字符串,则返回暂存池中它的引用。 如果不存在,则向暂存池添加对 str 的引用,然后返回该引用。

在下面的示例中,值为“MyTest”的字符串 s1 已被拘留,因为它是程序中的文本。 System.Text.StringBuilder 类生成与 s1 同值的新字符串对象。 对该字符串的引用被分配给 s2。 Intern 方法搜索与 s2 具有相同值的字符串。 由于存在此类字符串,因此该方法返回分配给 s1 的引用。 该引用又被分配给 s3。 引用 s1 和 s2 相比较的结果是不相等,因为它们引用了不同的对象;而引用 s1 和 s3 相比较的结果是相等,因为它们引用了同一字符串。

Dim s1 As String = "MyTest" 
Dim s2 As String = New StringBuilder().Append("My").Append("Test").ToString() 
Dim s3 As String = String.Intern(s2) 
Console.WriteLine(CObj(s2) Is CObj(s1))      ' Different references.
Console.WriteLine(CObj(s3) Is CObj(s1))      ' The same reference.

C#如何事件中获得GridView里面TextBox的值

如果是模板列,代码如下:

string n = ((TextBox)(this.GridView1.Rows[行号].Cells[1].FindControl("TextBox1"))).Text.Trim();

如果是非模板列,代码如下:

string n = this.GridView1.Rows[行号].Cells[1].Text.Trim();

如何获得行号:

e.RowIndex

VB.Net在WebBrowser使用CookieContainer中的cookies的方法

Private Class CookieAwareWebClient
	Inherits WebClient
	Public Sub New()
		CookieContainer = New CookieContainer()
	End Sub
	Public Property CookieContainer() As CookieContainer
		Get
			Return m_CookieContainer
		End Get
		Private Set
			m_CookieContainer = Value
		End Set
	End Property
	Private m_CookieContainer As CookieContainer
	Protected Overrides Function GetWebRequest(address As Uri) As WebRequest
		Dim request = MyBase.GetWebRequest(address)
		Dim httpRequest = TryCast(request, HttpWebRequest)
		If httpRequest IsNot Nothing Then
			httpRequest.CookieContainer = CookieContainer
		End If
		Return request
	End Function
End Class
Private Sub Form1_Load(sender As Object, e As EventArgs)
	Using client = New CookieAwareWebClient()
		client.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials
		client.DownloadData("http://blog.lishewen.com")
		Dim cookies = client.CookieContainer.GetCookies(New Uri("http://blog.lishewen.com"))
		Dim prefCookie = cookies("PREF")
		webBrowser1.Navigate("http://blog.lishewen.com", "", Nothing, ("Cookie: " & Convert.ToString(prefCookie.Value)) + Environment.NewLine)
	End Using
End Sub

string.Format的大括号转义

用string.format时,如果里面有大括号"{" or "}",就用两个大括号"{{" or "}}" 替换,比如
string.Format("黎摄文{{lishewen}},{0}lishewen.com", "算神")

VB.Net让random在极短时间内产生的随机数不相同

由于

Dim r As new Random()

的种子没有指定,生成的时间间隔太短导致生成结果一样

及时指定为

Dim rd As new Random(Now.Millisecond)

在运行速度快没有费时操作的情况下(如:并行计算)仍然得倒相同结果.

用:Dim rd As new Random(Guid.NewGuid.GetHashCode)

可以解决此问题

Reflector反编译.NET文件后修复

反编译后的工程文件用VS2010打开后,在打开窗体时会出现一系列错误提示:

第一种情况:

“设计器无法处理第 152 行的代码: base.AutoScaleMode = AutoScaleMode.Font; 方法“InitializeComponent”内的代码由设计器生成,不应手动修改。请移除任何更改,然后尝试重新打开设计器”。

解决方法就是:对所有System.Windows.Forms.命名空间里面的控件需要全命名空间的声明,例如里面上图的base.AutoScaleMode = AutoScaleMode.Font;就要改成base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
第二种情况:

“变量“manager”未声明或从未赋值。 ”

解决方法就是:本方法只限于在InitializeComponent中包含System.Resources.ResourceManager调用的窗体

1.资源文件格式转换,将.resources(二进制)文件转成.resx文件(XML)  用C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin下 resgen.exe  格式: resgen *.resources *.resx(.resx文件最好与窗体.cs文件同名)

2.将InitializeComponent方法中的对象manager替换为resources(没错,只替换变量名^_^,全部都换掉哦,最好的办法就是更改manager的申明)

3.将资源文件.resx放到窗体文件.cs相同的文件夹下。

4.将所有窗体(.cs)从工程中排除,再添加(这样可以省去将.resx文件映射到.csproj的过程)。

微软推新工具助开发者将iPhone应用转至WP7

据国外媒体报道,微软今天通过Windows Phone Developer Blog宣布,公司已经发布新款工具,以帮助开发者将iPhone应用转移至Windows Phone 7平台。微软同时提醒开发者“市场上并没有替你工作的神奇魔法棒”,新款iPhone/iOS to Windows Phone 7 API绘制工具,将使这一过程更加简单。

用户可以登录http://windowsphone.interoperabilitybridges.com,对该款API绘制工具进行了解,微软还提供了90页的“就Windows Phone 7平台,致iPhone应用开发者的指南”(Windows Phone 7 Guide for iPhone Applications Developers)。网站还配有开发者故事(developer stories)视频,及开发者开始开发时所需其他资料的汇编。

微软指出,具体而言,API绘制工具的功能有点类似于字典,允许用户挑选出自己的iOS API call,然后在Windows Phone 7平台查找相同分类、方法和事情通知。开发者可以搜索指定的iOS API call,并通过C#示例代码和针对两个平台的API文件,在Windows Phone 7平台寻找相同类别。

开始时,iOS APIs有三个分类可以通过该工具进行绘制:网络(Network/Internet)、用户界面(User Interface)以及数据管理(Data Management)。因为平台不同,以及拥有不同的UIs,因此并非全部的APIs均可以绘制。微软表示,将有更多的APIs可通过该工具进行绘制。

算神模板引擎基本使用方法

最近一连有3家网站定制了算神邮件群发器,上面有个”使用算神模板引擎“选项令有些人疑惑,下面就简单介绍一下用法

群发器上面绑定的算神模板引擎是单实例的简化版,只有一个占位符语法:{数据库字段名}

举个例子:

例如下面一个用户数据表

 id name sex ip email
 1 算神 先生 127.0.0.1 a@a.com

然后我们在发送窗体内填入

主题:{name}你好

内容:尊敬的会员 {name} {sex} 你好,你最后一次登陆的ip为:{ip},如需修改密码请到http://www.xxx.com/userinfo-{id}.html

这时收到的邮件就会是这样

主题:算神你好

内容:尊敬的会员 算神 先生 你好,你最后一次登陆的ip为:127.0.0.1,如需修改密码请到http://www.xxx.com/userinfo-1.html

另:此方法同样适用于装配了算神模板引擎的算神短信群发器