c# 與 .net 開發,一堆又一堆的新名詞,頭暈目眩,比如 clr / apartments / sta / mta / com
吐槽無力,只乙個問題:微軟真的是軟體公司,而不是文學公司?
form1.cs 與 form1.designer.cs 是 2 個檔案,一起定義了乙個 form 的行為/樣式等。在 vs2010 中會摺疊在一起。
其中,designer 中定義樣式。事件監聽、事件處理都在 form.cs 中定義。
雙擊 form.cs 會開啟 ui 效果介面,可以直接拖拽完成介面布局。右鍵 view code 可以檢視 form1.cs 原始碼。
program.cs 內定義了 main 函式,是啟動檔案。
[stathread]/[mtathead] 指定單/多執行緒執行模式。
using system;form1.cs 與 designer.cs 2個檔案定義的是同乙個 namespace 下的 同乙個 classusing system.collections.generic;
using system.linq;
using system.windows.forms;}}
每乙個檔案定義時,都使用了 partial class
介面布局的**,一般自動生成,在 designer 中。
手寫的**主要是事件處理,一般放在 form.cs 中
form.cs 的建構函式中,一般會先呼叫 designer.cs 中定義的 initializecomponent() 完成介面初始化。
在 initializecomponent 中會宣告每個控制項的索引 private system.windows.forms.button button1;
在 form.cs 中可以直接用過變數名 button1 操作該控制項。
所以,form.cs 的建構函式中,一般先呼叫 initializecomponent。
designer.cs 中,initializecomponent 初始化介面。dispose 方法釋放資源。釋放時需要注意不要造成資源洩露。
// --------------- form1.cs -----------------------------------exe 或者 dll 檔案需要依賴其它檔案得以正常執行,using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.windows.forms;
}}// ------------------- form1.designer.cs -------------------------
base.dispose(disposing);
}#region windows form designer generated code}}
最簡單的做法是:把依賴檔案拷貝到客戶端,程式內部用相對路徑讀取。
這一般是可以的,但若客戶刪除了這些資源,則會導致不可預期的效果。
通過資源檔案,可以把這些檔案嵌入到 exe 或者 dll 中。
資源檔案可分為 2 類:.resx 和 .resources。前者是 xml 格式,後者是二進位制。
只有當前 solution 存在同名的 .cs 檔案時,.resx 檔案才能正常工作。resources 則無此限制。
通過 system.resources 下的 resourcewriter 可以生成資源檔案,generate 產生檔案,close 關閉檔案。
建立例項後,即可通過 addresource 方法新增資源。第乙個引數是標示符,可以在**中通過標示符使用資源。
資源檔案中一般存三種型別的資料:byte流(byte)、物件(object)和字串(string)。
resourcewriter rw = new resourcewriter ( "filename.resources" ) ;suspendlayout() 呼叫後控制項的布局邏輯被掛起,直到呼叫 resumelayout() 方法為止。rw.generate ( ) ; // 產生檔案
rw.close ( ) ;
// 新增資源
public void addresource ( str_identifier , byte [ ] ) ;
public void addresource ( str_identifier , object );
public void addresource ( str_identifier , str_value ) ;
4.1 新增多國語言支援
在介面上新增元件後,會生成 .resx 檔案,vs2010 中摺疊在對應的 form.cs 下。
這是預設語言的資源檔案,檔名為 form1.resx
若要開發其他語言版本,在對應 form 右側的屬性選單中,將 localizable 設為 true,並將 language 設為所需語言即可。
設定新的顯示文字後儲存,會生成對應語言的 .resx 檔案。檔名格式為 form1.language-location.resx,例如:簡體中文為 form1.zh-cn.resx
僅當 language 為 default 時才可以新增或刪除介面中的元件。
僅當設定為新 language,且修改過顯示內容後,才會建立對應的資源檔案。
僅當選定 form 時,才能在右側屬性選單中設定語言。若選中 form 中的 button、text 等元件時,無法設定本地化屬性。
4.2 獲取與設定執行時語言
兩個關鍵概念:
system.globalization.cultureinfo.installeduiculture.name; // 獲取當前執行語言
system.threading.thread.currentthread.currentuiculture = new system.globalization.cultureinfo( "zh-chs" ); // 設定當前執行語言
當調整控制項的多個屬性時,將先呼叫 suspendlayout 方法,然後設定控制項的 size、location、anchor 或 dock 屬性,
最後呼叫 resumelayout 方法以使更改生效。
標籤: c#, gui, 筆記
c 與 winform 介面開發
在 windows 下使用 vs2010 開發,未深入研究。c 與 net 開發,一堆又一堆的新名詞,頭暈目眩,比如 clr apartments sta mta com 吐槽無力,只乙個問題 微軟真的是軟體公司,而不是文學公司?form1.cs 與 form1.designer.cs 是 2 個檔...
WinForm介面開發之「分頁控制項」
在程式中,分頁總是永遠的話題,因為資料總是很多很多,分頁展示在程式效能和資料檢視感官方面得到很好的平衡,是一種良好的程式設計習慣和ui設計。winform中的分頁控制項可能沒有asp.net世界中的分頁控制項那麼豐富多彩,不過也有不少的分頁控制項可以採用,各個人的可能都有一些不同的東西,一些好的東西...
Winform開發的介面處理優化
在winform開發中,客戶體驗是個很好的參考性指標,如果乙個功能使用的時候感覺很流暢,說明我們的程式執行效率還不錯,但是隨著資料的真多,原先可能流程的地方可能會變得比較卡,這時候就需要追本索源,找到癥結並進行處理。但是,如果我們對winform開發有一定的經驗積累,有些耗時緩慢的介面處理一開始還是...