單擊button控制項,執行對應操作。
選擇要操作的button控制項,在屬性欄內點選類似閃電標誌一樣的事件
,找到操作
,選擇click
,雙擊,即會在主程式中生成對應的單擊事件處理**,如下所示:
private void combtn_click(object sender, eventargs e)
sender
代表觸發事件的那個控制項,此處,sender
既是按鈕,如上所示,將sender
賦值給正確型別的物件,即可實現對button控制項的操作。
e
則代表該事件傳入的引數。此處沒有使用,在竹影青瞳的部落格關於(object sender, eventargs e)中已做了詳細介紹。
namespace lazercontrol
}
若是需要宣告乙個全域性的類變數,而不是單個變數,那就需要先new乙個該類即可,如下:
namespace lazercontrol
}// 在初始化函式內,new乙個變數
private void initializeserial()
加了static後,new的實體儲存在棧
裡,之後再new任何次,實體不變,就這乙個。
未加static,則new的實體儲存在堆
裡,之後每new一次,會生成乙個新的實體。
此處感謝曾老師的c#技術支援。(手動陰笑)
單擊按鍵開啟新的窗體
首先,建立乙個新窗體,方法為,右擊專案名稱點選新增
,windows窗體
,重新命名名稱即可,此處名稱為comsetting
。接著在主窗體內例項化窗體,**如下:
namespace lazercontrol
// ```其他**省略
}}
按照1
方法,進入到按鍵觸發處理函式中,將視窗例項化,然後呼叫show()函式,開啟新窗體,**如下:
private void combtn_click(object sender, eventargs e)
c#控制項大小隨窗體大小等比例變化
參考天黑不熄燈的的部落格c#控制項大小隨窗體大小等比例變化。
** 定義全域性變數
private float x;//當前窗體的寬度
private float y;//當前窗體的高度
** 功能函式setcontrols
//根據窗體大小調整控制項大小
private void setcontrols(float newx, float newy, control cons)
);//獲取控制項的tag屬性值,並分割後儲存字串陣列
float a = system.convert.tosingle(mytag[0]) * newx;//根據窗體縮放比例確定控制項的值,寬度
con.width = (int)a;//寬度
a = system.convert.tosingle(mytag[1]) * newy;//高度
con.height = (int)(a);
a = system.convert.tosingle(mytag[2]) * newx;//左邊距離
con.left = (int)(a);
a = system.convert.tosingle(mytag[3]) * newy;//上邊緣距離
con.top = (int)(a);
single currentsize = system.convert.tosingle(mytag[4]) * newy;//字型大小
con.font = new font(con.font.name, currentsize, con.font.style, con.font.unit);
if (con.controls.count > 0)
}}
** 在窗體的load事件中新增
private void form1_load(object sender, eventargs e)
** 在窗體的resize事件中新增
private void form1_resize(object sender, eventargs e)
注意:窗體屬性內maximizebox
要設定為true
。
c#窗體全屏功能
參考jack_meng的部落格c#窗體全屏功能。
設定視窗當使用者按enter
時,所單擊的窗體的按鈕
在窗體的load事件中,新增如下**:
private void mainwin_load(object sender, eventargs e)
也可在窗體屬性內找到accecptbutton
,選擇對應button按鍵的id。
設定書籤
按下組合鍵ctrl
+f2
設定書籤,再按組合鍵ctrl
+f2
消除書籤;按下f2
跳轉到下乙個書籤,按下shift
+f2
跳轉到上乙個書籤。
顯示行號
點選工具
-->選項
-->文字編輯器
-->c#
-->勾選行號
。
switch()
語句中,case後面的常量表達方法
在c/c++中,switch()
語句中的const
常常使用巨集定義來定義,但在c#中卻沒有巨集定義,所以可以用c#的enum
來解決,也可以用const常量來表示,舉例, case兩種值,0xf0
/0x0f
,分別為mod1/mode2,若直接用數字表示則不太直觀,所以用const來替代,**如下:
const byte mode1 = 0xf0; //注意常量宣告為 byte
const byte mode1 = 0x0f;
switch(mode)
多個非ui執行緒如何訪問ui控制項而不被報異常
在多執行緒程式中,新建立的執行緒不能訪問ui執行緒建立的視窗控制項,如果需要訪問視窗中的控制項,可以在視窗建構函式中將checkforillegalcrossthreadcalls設定為 false,即將將禁止跨執行緒訪問的檢查
禁能,即允許多執行緒訪問ui控制項,這個會造成無端的錯誤,因此不推薦使用,可以參考此篇部落格c# 跨執行緒呼叫控制項,
// 跨執行緒訪問不被檢查
control.checkforillegalcrossthreadcalls = false;
參考於多執行緒中使用checkforillegalcrossthreadcalls = false訪問視窗;
11.不定期更新
Visual studio之C 跨執行緒呼叫UI控制項
當前串列埠通訊專案,多個執行緒需要同時利用richtextboxmsg控制項列印資訊,直接呼叫會造成執行緒不安全,嚴重的時候會直接導致ui執行緒掛掉,因此本篇就跨執行緒呼叫ui控制項做個記錄。提示介面控制項的委託型別 delegate void showinfocallback string tex...
visual studio之遠端除錯
遠端除錯需要以下幾個步驟 1 在遠端裝置上安裝remote debugger,啟動,選擇tools options,設定為no authenication,勾選allow any user to debug,並將maximum idle time設為0 即可以一直閒置而不會自動退出程序 2 本地裝置...
visual studio之預編譯頭
之前在一公司實習時,每天早上一上來就是更新 編譯 整個sln編譯一次,在我那機器上,算了下時間,接近3個小時.什麼概念,就是早上9點半上班,等編譯完後,可以去午睡了.後來實在受不了,上網找了新增預編譯頭的方法,在工作群裡吶喊了下,無人鳥我.當實習生的痛苦啊.做畢設開始沒想到加編譯頭,不過 越寫越是多...