整理 winForm開發經驗及知識積累整理(一)

2021-06-04 02:23:17 字數 2837 閱讀 6347

本人做winform開發多年,孜孜不倦,略有小成,其中收集或者自己開發一些常用的東西,基本上在各個專案都能用到的一些開發經驗及知識積累,現逐步介紹一些,以饗讀者,共同進步。

1、視窗【×】關閉按鈕變為最小化,並在托盤提示資訊

一般有些管理系統,為了防止客戶隨意關閉程式或者基於其他原因,一般會把 視窗【×】關閉按鈕變為最小化,如大家熟悉的飛信、msn等等,但是有些不是很熟悉的客戶,最小化到托盤的時候,卻不知道程式到了那裡去了,因此,最小化的時候,伴隨乙個氣泡提示資訊,顯得有一定的必要,如下截圖所示。

首先在主窗體的設計介面中新增乙個notifyicon控制項,然後實現相關的**即可。 

下面列出一些關鍵的**出來,大家看了應該就知道如何實現了

private

void notifymenu_show_click(object sender, eventargs e)

else }

private

void notifymenu_exit_click(

object sender, eventargs e)

catch }

private

void notifyicon1_mousedoubleclick(

object sender, mouseeventargs e)

private

void mainform_maximizedboundschanged(

object sender, eventargs e)

//////

縮小到托盤中,不退出

///

private

void mainform_formclosing(

object sender, formclosingeventargs e)

} private

void mainform_move(

object sender, eventargs e)

//最小化到托盤的時候顯示圖示提示資訊

if (

this.windowstate == formwindowstate.minimized)

} 複製**

2、只允許允許乙個程式例項,即使是通過虛擬桌面方式連線過來的,也是只允許乙個人執行。

這個已經封裝好**了,只需要在main函式裡面呼叫一下函式即可,允許多個例項會出現下面的對話方塊提示資訊,提示不允許多例項執行,如下所示:

**如下所示。

//////

應用程式的主入口點。

///

[stathread]

private

static

void main()

private

static mutex mutex = 

null;

private

static

void globalmutex()

catch (exception ex)

//第一次建立mutex

if (newmutexcreated)

else }

複製**

3、使用notifywindow給使用者提示資訊

可以通過notifywindow類(最後附件中有),做一些資訊的提示,方便使用者了解一些重要資訊的提示,介面較為友好,如下所示:

提示資訊的**使用如下:

//////

彈出提示訊息視窗

///

public

void notify(

string caption, 

string content)

//////

彈出提示訊息視窗

///

public

void notify(

string caption, 

string content, 

int width, 

int height, 

int waittime)

private

void notifywindowclick(

object sender, eventargs e) }

複製**

4、使用searchcondion控制項,簡化查詢條件的轉化

不管在winform或者在webform中,查詢構造條件總是非常繁瑣的事情,使用該控制項能有效簡化**,提高操作的準確及方便行,這個控制項我完成了幾年了,一直伴隨我處理各種查詢操作。

private

string getconditionsql()

複製**

可以構造條件後,傳入查詢函式,實現資料的查詢。

string

where = getconditionsql();

listlist = bllfactory.instance.find(

where, 

this.wingridviewpager1.pagerinfo);

this.wingridviewpager1.datasource = 

new whc.pager.wincontrol.sortablebindinglist(list);

-- " + "

備件資訊報表";

複製**

最後呈上**用到的一些類庫及控制項: 

Winform開發中的窗體重複及靈活切換問題

1.問題引入 在專案中需要實現主窗體點選按鈕後開啟子窗體,但是如果不限制的話每次點選都會開啟乙個新窗體,使用者體驗不好還浪費記憶體。所以這裡要做的是限制每個子窗體只可以開啟一次,如果開啟後沒有關閉子窗體或者子窗體被最小化了,就直接把已開啟的窗體啟用並置頂顯示。同時還要滿足不同的子窗體是可以共存的,也...

B端產品的特點及開發經驗

b端的產品,是以企業為單位的。所有的資料和服務都按某個機構實體進行聚合。那麼我們如何提供乙個沙箱機制?理論上,我們向客戶提供的是無差別的服務。但是由於資料庫例項 伺服器效能受到任務繁重程度不同,對資源的占用也不同。這樣就會造成同樣付費,但是某些客戶耗費的資源較多。我們來看看docker。乙個映象乙個...

嵌入式軟體開發是否需要經驗,需要哪些基礎知識?

本人從畢業到現在一直在嵌入式軟體這個行業發展,已七年有餘,也曾經迷茫無助過,也驕傲自滿過,到現在算是趨於乙個比較穩定的狀態,嵌入式軟體開發的專案本身 量不會太大,除了一些特殊的方面外,基本難度都不是太大,曾經認為只要有人帶著,什麼樣的人都可以從事這個行業,從這兩年的經驗來看,以前想的可能有點太樂觀了...