2015年5月24日 星期日
VB.NET 應用篇
2018/05/12
參考資料:自訂數值格式字串
當我的資料是9.50,要格式化為9.5,可以使用String.Format來作,方法如下。
'記得要Imports System.Globalization
String.Format(CultureInfo.InvariantCulture, "{0:0.0}",CDbl("9.50").ToString))
2017/10/14
假設今天資料庫的資料某個欄位值與某家公司所規定的值不一樣,但你希望資料庫的資料可以跟某家公司所規定的值一樣,舉個例子,如下:
我的資料庫值1、2、3
1 代表 身心障礙人士子女(重度、極重度)
2 代表 身心障礙人士子女(中度)
3 代表 身心障礙人士子女(輕度)
某家公司規定的值A1、A2、A3
A1 代表 極重度/重度身心障礙人士子女
A2 代表 中度身心障礙人士子女
A3 代表 輕度身心障礙人士子女
如果我要把我的值1、2、3,替換成A1、A2、A3,我們可以這樣作,如下:
Dim DType = New Dictionary(Of String, String)
DType.Add("1", "A1")
DType.Add("2", "A2")
DType.Add("3", "A3")
MsgBox(DType("1") & vbNewLine & DType("2") & vbNewLine & DType("3"))
'顯示出來的結果會是A1、A2、A3
2017/08/27
1.四捨五入
Dim d1 As Decimal = 4.69
Response.Write("d1=" & d1 & "<br/>")
Response.Write("d1/100=" & (d1 / 100) & "<br/>")
Response.Write("d1四捨五入到小數點第一位=" & Math.Round(d1, 1, MidpointRounding.AwayFromZero) & "<br/>")
Response.Write("d1四捨五入=" & Math.Round(d1, MidpointRounding.AwayFromZero) & "<br/>")
2.取得圖片高度、寬度
Dim b As System.Drawing.Bitmap = New System.Drawing.Bitmap(Server.MapPath("~/img/test.jpg"))
Response.write("Width=" & b.Width & " Height=" & b.Height)
b.Dispose()
2017/07/19
參考資料:Optional (Visual Basic)
有時候我會把一些常用到的程式碼寫成方法,要用的時候可以去呼叫它,呼叫方法時常需要給它很多參數資料,有些參數我不見得要給它值,希望它可以使用預設值,那我就可以在ByVal前面加上Optional,代表這個參數可有可無不見得要給它參數值,但是必須定義一個預設值給它,如下:
Sub fun1(ByVal a1 As Integer,Optional ByVal s1 As String = "s1", Optional ByVal s2 As String = "s2",Optional ByVal us_a1 As UShort = 0)
...
End Sub
如果在呼叫的過程中,我只想給s2這個參數給它一個值,那我可以這樣子給s2值,如下:
'方法1
fun1(100,s2:="Hello")
'方法2
fun1(100, ,"Hello")
我個人比較喜歡方法1,比較明確。
2017/06/27
判斷日期是否有效,例如:2017/06/27。
Dim str_date As String="2017/06/27"
If (IsDate(str_date)) = False Or (IsDate(str_date) = True And (str_date.Length < 10 Or str_date.Length > 10)) Then
'錯誤
Else
'符合2017/06/27
End If
2016/02/22
判斷IP是否有效。
If Net.IPAddress.TryParse("140.130.192.3", Nothing) Then
'有效
Else
'無效
End If
2016/01/31
CheckBoxList項目存不存在
If CheckBoxList1.Items.FindByValue("A") IsNot Nothing Then
'存在
Else
'不存在
End If
2015/12/13
VB.NET Winform 使用MoveDirectory(移動目錄)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'將Directory1目錄(包含裡面的檔案)搬移到Directory2目錄
'補充:如果你想要搬移資料夾且修改資料夾的名稱,你可以將C:\Directory2\Directory1改為C:\Directory2\ABC
My.Computer.FileSystem.MoveDirectory("C:\Directory1", "C:\Directory2\Directory1")
End Sub
2015/06/29
參考:規則運算式語言-快速參考、Regex.IsMatch 方法
用正規表示式判斷是否為數字
If Regex.IsMatch("123", "^\d+$") = False Then '數字會回傳true
'不是數字
Else
'是數字
End If
2015/05/25
1.取得星期幾
Dim objd1 As Date = New Date()
objd1 = "2014-12-01 08:52"
Response.Write("objd1=" & objd1.ToString("yyyy/MM/dd HH:mm:ss") & "<br/>")
'Weekday方法 會回傳 1是星期日 2是星期一 3星期是二 4是星期三 5是星期四 6是星期五 7是星期六
Dim int_weekday As Integer = Weekday(objd1)
int_weekday = int_weekday - 1 '減1後 0星期日 1星期一 2星期二
If Not (int_weekday = 0 Or int_weekday = 6) Then
Response.Write("不是,星期日或星期六")
Else
Response.Write("是,星期日或星期六")
End If
2015年5月4日 星期一
ASP.NET WebForm 應用篇
2018/03/44
1.GridView在Eval中設定日期時間格式為yyyy/MM/dd HH:mm:ss。
<%# Eval("date_time", "{0:yyyy/MM/dd HH:mm:ss}")%>
2017/10/14
1.取得從哪一個網頁過來的。
Page.Request.UrlReferrer.AbsoluteUri
2.取得從哪一個網頁過來的,只取網頁名稱。
System.IO.Path.GetFileName(Page.Request.UrlReferrer.AbsolutePath)
2016/01/07
1.使用Regex正規表示Split字串切割。
Dim str_array1() As String = Regex.Split("1.題目1<br/>2.題目2<br/>3.題目3<br/>4.題目4", "\<br\/\>")
For x1 As Integer = 0 To str_array1.Length - 1
Response.Write(str_array1(x1) & "<br/>")
Next
C#寫法
string[] str = Regex.Split("AAA<p>BBB<p>DDD",@"\<p\>");
Response.Write(str[0] + ";" + str[2] + ";" + str[1]);
2015/10/29
1.Cookie儲存中文,輸出後亂碼。
Response.Cookies("test1").Value=HttpUtility.UrlEncode(TB_title.Text)'寫入
Label1.Text=HttpUtility.UrlDecode(Request.Cookies("test1").Value)'輸出
2.清除某個cookie。
If Not Request.Cookies("test1") Is Nothing Then
Response.Cookies("test1").Expires = DateTime.Now.AddDays(-1) '設定cookie到期日,過期
End If
2015/05/05
設定GridView裡的某個Label顏色,但已16進位設定。
GridView1_RowDataBound事件寫入:
If e.Row.RowType = DataControlRowType.DataRow Then
Dim L1 As Label = CType(e.Row.FindControl("L1"), Label)
Dim c1 As New ColorConverter
L1.ForeColor = CType(c1.ConvertFromString("#FF9900"), Color)
End If
2015年3月17日 星期二
ASP.NET DataList控制項 ItemDataBound 資料繫結事件
2015/03/18
Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
'每跑一筆資料將會經過此區域
'CType(e.Item.DataItem, DataRowView).Item("chk_cod").ToString '取得某個欄位資料
'CType(e.Item.FindControl("DropDownList1"), DropDownList) '取得DataList1 某個控制項
If IsDBNull(CType(e.Item.DataItem, DataRowView).Item("a1")) Then '此欄位是NULL
End If
End If
End Sub
Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
'每跑一筆資料將會經過此區域
'CType(e.Item.DataItem, DataRowView).Item("chk_cod").ToString '取得某個欄位資料
'CType(e.Item.FindControl("DropDownList1"), DropDownList) '取得DataList1 某個控制項
If IsDBNull(CType(e.Item.DataItem, DataRowView).Item("a1")) Then '此欄位是NULL
End If
End If
End Sub
2015年2月10日 星期二
VB.NET 使用GMail寄信
參考資料:[ASP.NET 3.5] 使用 Gmail 寄信, 請問下面程式錯在哪裡 ?
大學時期專題所寫到的程式碼,在此作個紀錄。
Imports System.Net
Imports System.Net.Mail
Imports System.Text.RegularExpressions
Sub Send_EMail(ByVal Recipient As String, ByVal M_Subject As String, ByVal M_Content As String, ByVal S_Account As String, ByVal S_Name As String, ByVal S_Password As String, Optional ByVal Filepath() As String = Nothing)
'Recipient收件者,M_Subject主旨,M_Content內容,'S_Account寄件人帳號,S_Name寄件人名稱,S_Password寄件人密碼,Filepath儲存在Server檔案上的路徑
'==============================================
'傳過來的寄信內容,請先處理完後再傳進M_Content變數-處理寄信內容
'==============================================
If Recipient = "" Then
Exit Sub
Else
'mail格式不符,就不送出
If Regex.IsMatch(as_to, "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*") = False Then
Exit Sub
End If
End If
Dim eMail As New MailMessage()
Dim attach As Attachment = Nothing
eMail.IsBodyHtml = True
'System.Net.Mail.MailAddress("寄件人的Gmail帳號@gmail.com", "寄件人名稱", System.Text.Encoding.UTF8)
eMail.From = New System.Net.Mail.MailAddress(S_Account, S_Name, System.Text.Encoding.UTF8)
eMail.SubjectEncoding = System.Text.Encoding.UTF8 '主旨編碼方式
eMail.BodyEncoding = Encoding.UTF8 '內容編碼方式
eMail.To.Add(New MailAddress(Recipient)) '收件者
eMail.Subject = M_Subject '主旨
eMail.Body = M_Content '內容
'====================================
'附加檔案
If Not Filepath Is Nothing Then
For i As Integer = 0 To Filepath.Length - 1
If Filepath(i) <> "" Then
attach = New Attachment(Filepath(i))
eMail.Attachments.Add(attach) '附加檔案
End If
Next
End If
'====================================
Dim client As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient()
client.Port = 587 '使用GMail,port必須使用587(25也可以),如果有其他的,例如:yahoo,hotmail等等,必須使用它們各自的port
client.Host = "smtp.gmail.com" '使用GMail,如果有其他的,例如:yahoo,hotmail等等,必須使用它們各自的host
client.EnableSsl = True '需要啟用SSL加密
client.UseDefaultCredentials = False
'client.Credentials = New System.Net.NetworkCredential("你的帳號@gmail.com", "你的gmail密碼")
client.Credentials = New System.Net.NetworkCredential(S_Account, S_Password)
client.Timeout = 500000 '建議5分鐘
client.Send(eMail)
If Not attach Is Nothing Then
attach.Dispose()
End If
eMail.Dispose()
End Sub
Step 1.然後在Button1_Click上呼叫Send_EMail並帶入參數,如下:
Send_EMail("要寄給誰的mail", "這裡是主旨", "哈囉~這裡是內容", "您的gmail帳號(例如:test@gmail.com)", "測試有限公司", "您的gmail密碼")
Step 2.最後請到您的GMail帳戶作設定,找到「安全性較低的應用程式」預設是關閉,請設定為開啟。
上述設定作完後,請測試是否成功寄信。
大學時期專題所寫到的程式碼,在此作個紀錄。
Imports System.Net
Imports System.Net.Mail
Imports System.Text.RegularExpressions
Sub Send_EMail(ByVal Recipient As String, ByVal M_Subject As String, ByVal M_Content As String, ByVal S_Account As String, ByVal S_Name As String, ByVal S_Password As String, Optional ByVal Filepath() As String = Nothing)
'Recipient收件者,M_Subject主旨,M_Content內容,'S_Account寄件人帳號,S_Name寄件人名稱,S_Password寄件人密碼,Filepath儲存在Server檔案上的路徑
'==============================================
'傳過來的寄信內容,請先處理完後再傳進M_Content變數-處理寄信內容
'==============================================
If Recipient = "" Then
Exit Sub
Else
'mail格式不符,就不送出
If Regex.IsMatch(as_to, "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*") = False Then
Exit Sub
End If
End If
Dim eMail As New MailMessage()
Dim attach As Attachment = Nothing
eMail.IsBodyHtml = True
'System.Net.Mail.MailAddress("寄件人的Gmail帳號@gmail.com", "寄件人名稱", System.Text.Encoding.UTF8)
eMail.From = New System.Net.Mail.MailAddress(S_Account, S_Name, System.Text.Encoding.UTF8)
eMail.SubjectEncoding = System.Text.Encoding.UTF8 '主旨編碼方式
eMail.BodyEncoding = Encoding.UTF8 '內容編碼方式
eMail.To.Add(New MailAddress(Recipient)) '收件者
eMail.Subject = M_Subject '主旨
eMail.Body = M_Content '內容
'====================================
'附加檔案
If Not Filepath Is Nothing Then
For i As Integer = 0 To Filepath.Length - 1
If Filepath(i) <> "" Then
attach = New Attachment(Filepath(i))
eMail.Attachments.Add(attach) '附加檔案
End If
Next
End If
'====================================
Dim client As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient()
client.Port = 587 '使用GMail,port必須使用587(25也可以),如果有其他的,例如:yahoo,hotmail等等,必須使用它們各自的port
client.Host = "smtp.gmail.com" '使用GMail,如果有其他的,例如:yahoo,hotmail等等,必須使用它們各自的host
client.EnableSsl = True '需要啟用SSL加密
client.UseDefaultCredentials = False
'client.Credentials = New System.Net.NetworkCredential("你的帳號@gmail.com", "你的gmail密碼")
client.Credentials = New System.Net.NetworkCredential(S_Account, S_Password)
client.Timeout = 500000 '建議5分鐘
client.Send(eMail)
If Not attach Is Nothing Then
attach.Dispose()
End If
eMail.Dispose()
End Sub
Step 1.然後在Button1_Click上呼叫Send_EMail並帶入參數,如下:
Send_EMail("要寄給誰的mail", "這裡是主旨", "哈囉~這裡是內容", "您的gmail帳號(例如:test@gmail.com)", "測試有限公司", "您的gmail密碼")
Step 2.最後請到您的GMail帳戶作設定,找到「安全性較低的應用程式」預設是關閉,請設定為開啟。
上述設定作完後,請測試是否成功寄信。
2015年1月26日 星期一
VB.NET 字數限制
Dim str_temp As String = String.Empty, maxlength As Integer = 50, a1 As Integer = 0, a2 As Integer = 0
Dim n As System.Text.ASCIIEncoding = New System.Text.ASCIIEncoding()
Dim b() As Byte = Nothing
b = n.GetBytes(TextBox2.Text)
For i As Integer = 0 To b.Length - 1
If b(i) = 63 Then
a1 = a1 + 1
Else
a2 = a2 + 1
End If
Next
Response.Write("byte長度:" & b.Length & ";全形(包含中文字、標點符號)=" & a1 & ";半形(英文字、標點符號)=" & a2)
以上有錯誤請指正,謝謝
2015年1月23日 星期五
ASP.NET DropDownList 程式碼新增Item
Dim dt1 As DataTable=Nothing
....假設dt1已經從資料庫中取回項目資料....
DropDownList1.DataTextField = "html_text" '顯示在網頁上的項目名稱
DropDownList1.DataValueField = "value" '項目的值
DropDownList1.DataSource = dt1.DefaultView
DropDownList1.DataBind() '資料繫結
'資料繫結後在DropDownList第一個項目前,再插入新的項目
DropDownList1.Items.Insert(0, New ListItem("請選擇審核人", "0"))
2015年1月20日 星期二
[ASP.NET for VB.NET] String.Trim 無法刪除空白字元
參考資料1.Trimming Character Strings
參考資料2.魔鬼般的細節:使用 C# 的 String.Trim() 方法刪除空白字元
有時候會因為複製Excel檔裡的資料,貼到自己的程式中執行,在複製過來的資料中可能因為排版的關係,而產生一些特殊字元,使得您再怎麼刪除空白字元都無法刪除,解決辦法如下。
Dim str_data As String = " ABCDE "
Dim whiteSpaceDelimiters() As Char = _
{ChrW(&H9),ChrW(&HA),ChrW(&HB),ChrW(&HC),ChrW(&HD),ChrW(&H20), _
ChrW(&HA0),ChrW(&H2000),ChrW(&H2001),ChrW(&H2002),ChrW(&H2003), _
ChrW(&H2004),ChrW(&H2005),ChrW(&H2006),ChrW(&H2007),ChrW(&H2008), _
ChrW(&H2009),ChrW(&H200A),ChrW(&H200B),ChrW(&H3000),ChrW(&HFEFF) _
}
str_data = str_data.Trim(whiteSpaceDelimiters)
Response.Write("[" & str_data & "]")
'如果是C#
'char[] whiteSpaceDelimiters = new char[]
'{
''\u0009’, // CHARACTER TABULATION
''\u000A’, // LINE FEED
''\u000B’, // LINE TABULATION
''\u000C’, // FORM FEED
''\u000D’, // CARRIAGE RETURN
''\u0020’, // SPACE
''\u00A0’, // NO-BREAK SPACE
''\u2000’, // EN QUAD
''\u2001’, // EM QUAD
''\u2002’, // EN SPACE
''\u2003’, // EM SPACE
''\u2004’, // THREE-PER-EM SPACE
''\u2005’, // FOUR-PER-EM SPACE
''\u2006’, // SIX-PER-EM SPACE
''\u2007’, // FIGURE SPACE
''\u2008’, // PUNCTUATION SPACE
''\u2009’, // THIN SPACE
''\u200A’, // HAIR SPACE
''\u200B’, // ZERO WIDTH SPACE
''\u3000’, // IDEOGRAPHIC SPACE
''\uFEFF’ // ZERO WIDTH NO-BREAK SPACE
'};
參考資料2.魔鬼般的細節:使用 C# 的 String.Trim() 方法刪除空白字元
有時候會因為複製Excel檔裡的資料,貼到自己的程式中執行,在複製過來的資料中可能因為排版的關係,而產生一些特殊字元,使得您再怎麼刪除空白字元都無法刪除,解決辦法如下。
Dim str_data As String = " ABCDE "
Dim whiteSpaceDelimiters() As Char = _
{ChrW(&H9),ChrW(&HA),ChrW(&HB),ChrW(&HC),ChrW(&HD),ChrW(&H20), _
ChrW(&HA0),ChrW(&H2000),ChrW(&H2001),ChrW(&H2002),ChrW(&H2003), _
ChrW(&H2004),ChrW(&H2005),ChrW(&H2006),ChrW(&H2007),ChrW(&H2008), _
ChrW(&H2009),ChrW(&H200A),ChrW(&H200B),ChrW(&H3000),ChrW(&HFEFF) _
}
str_data = str_data.Trim(whiteSpaceDelimiters)
Response.Write("[" & str_data & "]")
'如果是C#
'char[] whiteSpaceDelimiters = new char[]
'{
''\u0009’, // CHARACTER TABULATION
''\u000A’, // LINE FEED
''\u000B’, // LINE TABULATION
''\u000C’, // FORM FEED
''\u000D’, // CARRIAGE RETURN
''\u0020’, // SPACE
''\u00A0’, // NO-BREAK SPACE
''\u2000’, // EN QUAD
''\u2001’, // EM QUAD
''\u2002’, // EN SPACE
''\u2003’, // EM SPACE
''\u2004’, // THREE-PER-EM SPACE
''\u2005’, // FOUR-PER-EM SPACE
''\u2006’, // SIX-PER-EM SPACE
''\u2007’, // FIGURE SPACE
''\u2008’, // PUNCTUATION SPACE
''\u2009’, // THIN SPACE
''\u200A’, // HAIR SPACE
''\u200B’, // ZERO WIDTH SPACE
''\u3000’, // IDEOGRAPHIC SPACE
''\uFEFF’ // ZERO WIDTH NO-BREAK SPACE
'};
訂閱:
意見 (Atom)