[VB.NET]MDI表單在開啟時做語系切換的注意事項

記得在[VB.NET].NET多語系程式(四) - 已開啟表單的語系切換這篇提過兩種已開啟表單的語系切換方法,一種是透過遞迴搭配ComponentResourceManager,一種是把元件移除後再呼叫InitializeComponent。這兩種方法在一般表單下運作良好,但在MDI表單上使用就必須特別的留意。 先讓我們來看一下在MDI表單上使用會發生的問題。這邊使用內建的MDI Parent,在其工具列上放了兩個按鈕,分別對應上面提到的兩個切換語系的寫法。 接著建立要拿來開啟的MDI子表單,其上放了個測試用的選單選項,設好其選單選項的合併設定與中文語系要顯示的字串,並跟MDI主表單一樣也放置兩個切換語系按鈕。 當子表單被叫起時,子表單的選單選項就會被合併至主表單的選單上。 在切換語系時就會發現第一種切換語系的方法,不論在子視窗抑或是在主視窗都無法使用。而第二種切換語系的方法,則是在主視窗切換會把所有子視窗都關閉,在子視窗切換會有錯誤的結果。 會有這樣的現象,是因為子視窗選單選項被主視窗合併,導致子視窗選單找不到任何選單選項,而主視窗選單雖然找的到子視窗的選單選項,卻不知道他是子視窗的選單選項。就算知道,該選單選項的資源也不在主視窗上。目前知道的解法就是讓選單先離開合併狀態,切換語系後再合併選單。 ...

April 25, 2010 · 2 min · 549 words · Larry Nung

[VB.NET]密碼框顯示程式探討與其簡易的保護之道

相信大家都看過甚至用過密碼顯示工具,其原理Rico大[C#][WinForm]擺脫密碼透視小工具這篇已經把概念給帶出來了,主要是要過濾WM_GETTEXT與WM_SETTEXT兩個訊息(WM_SETTEXT過濾的原因不詳,這邊直接沿用),但除了取得密碼外,也有的工具是可以讓密碼直接顯示的,那要怎摸做呢?很簡單,其實密碼框是透過設定EM_SETPASSWORDCHAR屬性來達到用星號隱藏密碼的效果,因此我們只要利用PostMessage把密碼框的EM_SETPASSWORDCHAR屬性給取消即可,簡易的程式如下。 _ Private Shared Function WindowFromPoint(ByVal Point As Point) As IntPtr End Function ...

April 24, 2010 · 2 min · 745 words · Larry Nung

[VB.NET]自定義.NET WindowForm表單介面(三)

繼之前談到的自定義WindowForm表單介面(二),裡面提到的方法一與方法二在使用上都會有個現象,那就是在工作列上按下滑鼠右鍵,本來該彈出的快顯選單消失不見了。 ...

April 23, 2010 · 1 min · 284 words · Larry Nung

[VB.NET]處理MDI子視窗清單中的殘留分隔線

在撰寫MDI視窗程式時,要讓程式在某個選單選項上,下拉時顯示所有開起的子視窗清單,我們可以在選單控制項上設定MdiWindowListItem屬性,把該屬性指到要顯示子視窗清單的選單選項。 ...

April 23, 2010 · 1 min · 415 words · Larry Nung

[VB.NET]實做Spy++的拖曳箭靶

相信有做過開發的大家,對於Spy++這套軟體一定都不陌生,應該也都知道在Spy++中有個可以拖曳的箭靶,透過這個可拖曳的箭靶,使用者可以很快速的指定要監看的視窗。今天這篇就是稍微紀錄一下如何實作這個拖曳箭靶。 ...

April 22, 2010 · 2 min · 548 words · Larry Nung

[Linq]Linq程式逐步執行與偵錯

若是使用C#要對Linq程式做逐步的執行與偵錯,我們可以直接透過Step (F11)逐步執行。 ...

April 18, 2010 · 1 min · 423 words · Larry Nung

[Extension Method][VB.NET]使用擴充方法過濾出組件內的特定類別

今天把之前的[C#][VB.NET]取得專案內所有表單名稱這篇程式給修了一下,順便把其概念提出成擴充方法,整理如下: ...

April 16, 2010 · 1 min · 228 words · Larry Nung

[VB.NET]比對兩個目錄中不同的檔案

這陣子回論壇問題時,試著使用交集的方式寫了比對檔案的函式,整理紀錄如下: ...

April 13, 2010 · 2 min · 544 words · Larry Nung

[VB.NET]VB 10.0 Implied Line Continuation

VB.NET是line-oriented語言,與C#不同的是,在撰寫VB.NET時,不需使用像是";“的終止符號。撰寫的指令幾乎都是一行寫完,若要換行,可使用串接字元「_」,明確告知系統程式碼有斷行。 ...

April 10, 2010 · 1 min · 429 words · Larry Nung

[Extension Method]使用擴充方法來做物件的深層複製

紀錄一下用序列化來做深層複製的擴充方法 ...

April 8, 2010 · 1 min · 134 words · Larry Nung