Q:
如何作全形/半形轉換?
A:
原來以為要判斷第一個byte的ASCII大小, 沒想到 .net 提供一個簡便函數, 專門處理這項工作, 實在太帥了.
- 全形轉半形
Strings.StrConv(mDigit, VbStrConv.Narrow, 0)
- 半形轉全形
Strings.StrConv(mDigit, VbStrConv.Wide, 0)
日文字串也可以, 我想所有DBCS也都可以吧.
That's all, keep coding!!
這是我開發專案時所發覺的.net 程式小秘訣,與大家分享.
Q:
不管是Web Application 或 Windows Application, 使用者都會要求表單顯示時, 游標必須擺在第一欄, 而且按Enter時會觸發最常使用的按鈕, 這要怎麼做呢?
A: 使用.net 2.0 or above
Web Form
在 html 的 form 標籤直接加入defaultbutton、defaultfocus屬性如下:
<form id="form1" runat="server" defaultbutton="Button2" defaultfocus="TextBox2">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack = False Then
Me.Form.DefaultButton = Button2.UniqueID
Me.Form.DefaultFocus = TextBox2.UniqueID
End If
End Sub
使用Master Page時, form 標籤在主板網頁, 無法直接指定, 須調整一下姿勢, 如下:
Page.Form.DefaultButton = Button2.UniqueID
Page.Form.DefaultFocus = TextBox2.ClientID
Windows Form
That's all, keep coding.
.net 建置時出現 lc.exe 錯誤, vs IDE無任何詳細訊息, 通常原因是引用third party元件, 並將專案複製給他人使用時產生錯誤, 處理方法有二:
A方案
B方案
PS. A方案為同事Frank所想出的方式, 給他拍拍手.
That's all, keep coding.
這兩天同事反映Linux server效能不彰, 嚴重影響應用程式效能, 但因之前也未接觸過Linux, 事情來了, 也只好硬著頭皮上場了, 之下是我的一些租淺看法:
為了Linux, 最近度數又要增加了. 預告下次要寫一篇【眼睛保健】的文章與大家分享.
Keep coding.
今天看了一篇關於『如何建立 IE 的右鍵選單(Context Menu)』的文章, 網址如下:
http://www.codeproject.com/KB/menus/IE_Context_Menu_Installer.aspx
它是以C#安裝專案為例子, 說明如何建立右鍵選單, 我試著以VB.NET直接產生右鍵選單, 效果還不錯, 步驟如下:
That's all, keep coding.
從網路上可以找到不少Html 編輯器的控制項, 例如下列網址 : http://windowsclient.net/articles/htmleditor.aspx
使用起來很方便, 功能也很帥, 但是部署時卻發生兩個問題:
1. ieframe.dll 無法註冊
2. 程式死當, 微軟要我們向他報告, 且保證不回覆, #$%^&
還好努力找了一陣子, 才把它搞定了.
1. ieframe.dll 無法註冊, 那就在部署專案中排除它
2. 程式死當, 是因為.net 2.0不再支援 ActiveX的..., 必須copy mshtml.dll 至應用程式目錄下.
That's all :-) , Keep Coding !!
PS.
其實可以直接用 .net 2.0 所提供的控制項再加上ExecCommand, 就可以製作一個類似的Html 編輯器了, 只是已經搞定, 就算了.
網際網路上有許多產生DB schema的作法, 今天看到一個滿簡單的, 介紹給大家:
http://www.codeproject.com/KB/database/SQL_DB_DOCUMENTATION.aspx?msg=2424192#xx2424192xx
作法:
That's all :-)
我們通常使用索引來提升SQL指令的執行速度, 其實做大量資料更新時還有一個簡單的地方可以提升速度, 就是使用交易(Transaction), 新增一萬筆資料至MS SQL Server, 大約快了三倍多, 測試程式如下:
1. 不使用交易
Dim cnn As New SqlConnection("server=.;database=sampledb;integrated security=sspi;")
cnn.Open()
Dim MyWatch As New Stopwatch
MyWatch.Start()
Dim mycommand As New SqlCommand()
mycommand.Connection = cnn
Dim n As Integer
Try
mycommand.CommandText = "truncate TABLE ex1;"
mycommand.ExecuteNonQuery()
Catch
End Try
For n = 0 To 10000 - 1
mycommand.CommandText = String.Format("INSERT INTO ex1 (a,b,c) VALUES('a','c',{0})", n + 1)
mycommand.ExecuteNonQuery()
Next
MsgBox("MyWatch.ElapsedMilliseconds=" & MyWatch.ElapsedMilliseconds)
2. 使用交易
Dim cnn As New SqlConnection("server=.;database=sampledb;integrated security=sspi;")
cnn.Open()
Dim MyWatch As New Stopwatch
MyWatch.Start()
Dim mycommand As New SqlCommand()
Dim mytransaction As SqlTransaction = cnn.BeginTransaction
mycommand.Connection = cnn
mycommand.Transaction = mytransaction
Dim n As Integer
Try
mycommand.CommandText = "truncate TABLE ex1;"
mycommand.ExecuteNonQuery()
Catch
End Try
' use transaction to make the process more quick
For n = 0 To 10000 - 1
mycommand.CommandText = String.Format("INSERT INTO ex1 (a,b,c) VALUES('a','c',{0})", n + 1)
mycommand.ExecuteNonQuery()
Next
mytransaction.Commit()
MsgBox("MyWatch.ElapsedMilliseconds=" & MyWatch.ElapsedMilliseconds)
3. 不使用交易, 但採用批次更新, 比第一種快1/5
Dim cnn As New SqlConnection("server=.;database=sampledb;integrated security=sspi;")
cnn.Open()
Dim MyWatch As New Stopwatch
MyWatch.Start()
Dim mycommand As New SqlCommand()
mycommand.Connection = cnn
Dim n As Integer
Try
mycommand.CommandText = "truncate TABLE ex1;"
mycommand.ExecuteNonQuery()
Catch
End Try
Dim da1 As New SqlDataAdapter()
da1.InsertCommand = mycommand
da1.UpdateBatchSize = 10000
For n = 0 To 100000 - 1
mycommand.CommandText = String.Format("INSERT INTO ex1 (a,b,c) VALUES('a','c',{0})", n + 1)
da1.InsertCommand.ExecuteNonQuery()
Next
MsgBox("MyWatch.ElapsedMilliseconds=" & MyWatch.ElapsedMilliseconds)
Q: VS.net專案在My Project中具有設定(Setting)與資源(Resources)兩個頁籤, 都可以設定字串, 我一直搞不懂兩者有甚麼差別? 它們個字的使用時機為何呢?
有一天當我試圖要做多語系(Globalization)時, 我就暸了, 原來設定(Setting)是沒辦法進行多語系的, 而資源(Resources)是可以很輕鬆完成多語系工作, 例如要繁體化字串資源, 只要複製My Project目錄中的Resource.resx 成 Resource.zh-tw.resx, 再編輯該檔內容即可, 反之設定(Setting)在建置後會產生*.exe.config檔, VS.net不提供*.exe.zh-tw.config.
That's all. Keep Coding.