2009年9月24日

利用C#的TextBox來設計避免輸入非數字字元的金錢欄位

設計一個可輸入金額的TextBox,此欄位可依照金錢格式顯示,每三位新增一個逗點,並且禁止輸入與數字無關的字元。這邊利用了TryParse()在轉換字串時的優勢來設計此功能:

private string oldString = ""; //全域變數,儲存先前的textBox1.Text
private void textBox1_TextChanged(object sender, EventArgs e)
{
//避免因為重設相同的值給textBox1.Text時而造成事件發生
if (textBox1.Text.Equals(oldString)) return;
//如果只輸入負號先不處理
if (textBox1.Text.Equals("-")) return;
//存輸入的值
long lTemp = 0;
//暫存游標的位置
int selectStartTemp = textBox1.SelectionStart;
//暫存轉換前textBox1的字串長度
int oriStringLength = textBox1.Text.Length;
//先將之前轉換過的字串還原成數值並存入lTemp
//若無法正常轉換則有兩種狀況要處理
if (!Int64.TryParse(textBox1.Text.Replace(",", "").Replace(" ", ""), out lTemp))
{
//textBox1為空字串時無法轉換,則保留空字串值
if (textBox1.Text.Equals("")) oldString = "";
//textBox為非數字字串時則還原先前的值
else
{
textBox1.Text = oldString;
textBox1.SelectionStart =
selectStartTemp - (oriStringLength - oldString.Length);
}
return;
}
//轉換成金錢格式,注意這裡是使用N0,使用沒有小數點的金錢格式
textBox1.Text = string.Format("{0:N0}", lTemp);
//若轉換後的字串長度比轉換前大,表示多了逗號,需要修正游標位置
if (textBox1.Text.Length > oriStringLength)
selectStartTemp += textBox1.Text.Length - oriStringLength;
oldString = textBox1.Text;
//指定游標到正確位置
textBox1.SelectionStart = selectStartTemp;
}


使用這個方法還有一個好處,就是不會發生溢位,本來是沒有考慮溢位的狀況,一開始還以為設定到textBox1的MaxLength,慢慢檢查才發現是因為TryParse在轉換字串時失敗的關係,真是誤打誤撞~ :p

2009年6月15日

Access 2003 讓欄位存民國年

 
假設要存的民國日期為:民國87年8月15日

若想將欄位格式儲存為:87/08/15

格式:e/mm/dd
輸入遮罩:"民國"99/99/99;0;_

這邊要注意的是在輸入遮罩的地方一定要輸入「"民國"」,而且第一個分號後面要輸入0,這樣系統才會正確自動轉換。
如果要考慮民國100年的輸入格式,遮罩就要改成
「"民國"999/99/99;0;_」。

2009年2月6日

SharpGL (2) – A very simple example

這邊先做一個簡單的例子,順便測試環境是否能夠正常執行。

  1. 新建一個C# Windows Application
  2. 在Form裡新增OpenGLControl,同時調整適當的大小
    SglEx0104 
  3. 增加該OpenGLControl的OpenGLDraw event
    SglEx0105
  4. 直接在該event中coding
    (程式碼參考
    Installing and adding to Visual Studio - Step by Step)
    SglEx0106 
  5. 上述的Form1.cs要先using SharpGL這個namespace才能直接調用OpenGL class!
  6. 這樣就能Start debugging了~
    SglEx0107

2009年2月5日

SharpGL (1) – 安裝與配置

  1. 先到SharpGL下載套件
  2. 解壓縮到適當的地方
  3. 建立一個C# Windows Application
  4. 在toolbox點選滑鼠右鍵-->Choose Items...
    SglEx0101
  5. 匯入SharpGL.dll於.NET Framework Components,SharpGL.dll在套件內的Binaries\Release底下
    SglEx0102
  6. toolbox會出現SharpGL的控制項
    SglEx0103 

2009年1月13日

zlib在vs2005的配置與使用

  1. 下載zlib compiled DLL(當前最新為version 1.2.3)
  2. 將zlib1.dll解壓縮到C:\WINDOWS\system32
  3. 把include資料夾內的zconf.h與zlib.h解壓縮到C:\Program Files\Microsoft Visual Studio 8\VC\include\zlib(請自行新建zlib資料夾)
  4. lib資料夾內的zdll.exp和zdll.lib解壓到C:\Program Files\Microsoft Visual Studio 8\VC\lib
  5. 新建一個測試zlib的win32 console application project
  6. 編輯project屬性-->Configuration Properties-->Linker-->Input-->Additional Dependencies輸入zdll.exp zdll.libzlibtest02