上色

Code Block

2013年10月30日 星期三

[EndNote] 避免EndNote誤判文件中的Refence

  當文件中含有左右括號的文字時(通常是化學式或者方程式),EndNote預設會將之判別為參考文獻,但是事實上他根本不是參考文獻,因此就會出現如下的錯誤︰

此時只能按下"Ignore all"來告訴EndNote不要把該筆資料視為參考文獻,但是每次都要這麼做總是十分的魯洨...

那要如何避免這種情形呢? 只要在設定中把「暫時參考文獻格式」改掉就好,如下圖︰

要改成什麼都可以,只要不要與文件中會出現的符號衝突就可以,比如此處我是改為「<<......}」,如此一來只有被這樣的符號包圍的文字,EndNote才會將之視為參考文獻,就再也不會誤判了。




2013年10月25日 星期五

[VB.Net] 執行緒參數的傳入與傳出

首先定義一個Class,並在其中定義該執行緒要執行的方法
Public Class Class1
    Public Event ShowMsg(ByVal text As String) '宣告事件,觸發該事件即可傳出參數
    Private sum As Integer '執行緒執行時傳入的參數

    Property Num As Integer '設成屬性存取
        Get
            Return sum
        End Get
        Set(value As Integer)
            sum = value
        End Set
    End Property

    Public Sub calcd() '該執行緒要執行的方法
        For I = 0 To 1000
            sum += I
            RaiseEvent aa(sum) '觸發事件
            Threading.Thread.Sleep(100)
        Next
    End Sub
End Class

接著新建一個該類別的執行個體,並設定要傳入的參數,接著設定事件的處理方式,啟動執行緒。

Public Class Form1

    Private Delegate Sub InvokeDelegate(ByVal text As String)
    Private t As Threading.Thread

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim c As Class1 = New Class1 '建立一個Class1的執行個體
        c.Num = 10 '設定要傳入的參數(也可在建立執行個體時以建構式設定)
        '新建一個執行緒,指向Class1的執行個體中要執行的方法(該方法必須為Public)
        t = New Threading.Thread(AddressOf c.calcd) 
        AddHandler c.ShowMsg, AddressOf ShowMsg '設定事件的處理方式,將事件指向Form1的ShowMsg()
        t.Start()
    End Sub

    Private Sub ShowMsg(ByVal text As String)
        '若呼叫端不是建立該控制項(Me)的執行緒,則以委派方式呼叫
        If Me.InvokeRequired Then
            Invoke(New InvokeDelegate(AddressOf ShowMsg), text)
        Else
            TextBox1.Text = text '顯示訊息
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        t.Abort()
    End Sub
End Class

如此一來,每一次執行緒觸發事件時都會指向Form1的ShowMsg(),藉此傳出參數

2013年10月14日 星期一

[VB.Net] 表單開啟及關閉時觸發的事件順序

開啟表單時,順序如下:

1. Control.HandleCreated:發生於為控制項建立控制代碼時
2. Control.BindingContextChanged:發生於 BindingContext 屬性的值變更時
3. Form.Load:發生在表單第一次顯示之前
4. Control.VisibleChanged發生於: Visible 屬性值變更時
5. Form.Activated:發生於表單以程式碼或由使用者啟動時
6. Form.Shown:每當第一次顯示表單時發生

關閉表單時,順序如下:

1. Form.Closing:發生於表單正在關閉時
2. Form.FormClosing:發生於表單關閉之前
3. Form.Closed:發生於表單已關閉時
4. Form.FormClosed:發生於表單關閉之後
5. Form.Deactivate:發生於表單失去焦點且不再是使用中的表單時

Reference:
1. http://msdn.microsoft.com/zh-tw/library/86faxx0d.aspx
2. http://www.dotblogs.com.tw/yc421206/archive/2009/07/24/9668.aspx




[Windows] 設定預設開啟程式命令

找到HKEY_CLASSES_ROOT\Applications\程式名稱\shell\open\command
指定執行檔名稱即可 
Ex. 
在...\程式名稱\shell\open\command新增以下機碼 
類型︰REG_EXPAND_SZ(可擴充字串值)
資料︰"%ProgramFiles(x86)%\Windows Media Player\wmplayer.exe" /Open "%L"

2013年10月9日 星期三

[VB.Net] 簡單快速讓程式崩潰

Environment.FailFast(text as String)
簡單快速讓你的程式崩潰,馬上crash
◢▆▅▄▃ 崩╰(〒皿〒)╯潰 ▃▄▅▆◣