在Web上面要實現一個遮罩層或者說是蒙版吧,有了DIV那不算什麼難事,只要給div定好位置和大小,把顏色的Alpha值設一下就有透明的效果。不過在Winform中實現起來就沒那麼簡單了事。嘗試過用一個Panel,那底色設成透明,真的透明瞭。窗體後面的東西都顯示出來了。就是沒把Panel蓋住的控件顯示出來。這樣看來不是辦法。谷了一下子歌。找到了一個,仍是要寫控件的,不算難,但用到了一點兒沒見過的東西。經一事長一智吧。this
重寫到了一個Control的屬性CreateParams,它是CreateParams類型的。關於這個類,MSDN上簡單解釋道:封裝建立控件時所需的信息。而依我看是關於樣式的設置,並且裏面的樣式設置都是些0x00000040、0x00000020的按位組合。在網上找了一些,整理了了一下也塞到博文的最後面。spa
1 protected override CreateParams CreateParams 2 { 3 get 4 { 5 CreateParams cp = base.CreateParams; 6 cp.ExStyle |= 0x00000020; 7 return cp; 8 } 9 }
這樣寫控件下去,多半是要去重繪的,這裏重寫OnPaint方法不過不復雜,給控件填背景色,仍是直接把全部代碼貼出來。
下面就羅列一些系網上搜刮回來的的窗口樣式,絕大部分沒那個表明的整形值,有些就算是有了也是重複的,摸不着
![](http://static.javashuo.com/static/loading.gif)
1 1、窗口樣式 2 3 WS_POPUP 彈出式窗口(不能與WS_CHILDWINDOW樣式同時使用) 4 WS_CHILDWINDOW 子窗口(不能與WS_POPUP合用) 5 WS_MINIMIZE 建立窗口擁有最小化按鈕 6 WS_MINIMIZEBOX 建立窗口擁有最小化按鈕,須同時指定WS_SYSTEM樣式 7 WS_VISIBLE 可見狀態 8 WS_DISABLED 不可用狀態 9 WS_CLIPSIBLINGS 使窗口排除子窗口之間的相對區域 10 WS_CLIPCHILDREN 當在父窗口內繪圖時,排除子窗口區域 11 WS_MAXIMIZE 具備最大化按鈕 12 WS_MAXIMIZEBOX 建立窗口擁有最大化按鈕,須同時指定WS_SYSTEM樣式 13 WS_CAPTION 有標題框和邊框(和WS_TILED樣式相同) 14 WS_BORDER 有單邊框 15 WS_DLGFRAME 帶對話框邊框樣式,不帶標題框 16 WS_VSCROLL 有垂直滾動條 17 WS_HSCROLL 有水平滾動條 18 WS_SYSMENU 標題框上帶有窗口菜單(須指定WS_CAPTION樣式) 19 WS_THICKFRAME 有可調邊框(與WS_SIZEBOX樣式相同) 20 WS_TILED 與WS_OVERLAPPED風格相同 21 WS_TILEDWINDOW 與WWS_OVERLAPPEDWINDOW風格相同 22 WS_GROUP 組樣式,每一個組的第一個控件具備WS_TABSTOP樣式 23 WS_TABSTOP 可接受TAB鍵 24 WS_OVERLAPPED 建立一個重疊式窗口,擁有標題欄和邊框 25 WS_OVERLAPPEDWINDOW 即:WS_OVERLAPPED風格,WS_CAPTION風格,WS_SYSMENU風格 26 WS_THICKFRAME風格,WS_MINIMIZEBOX風格和WS_MAXIMIZEBOX 27 風格的組合 28 29 30 31 32 33 /* 窗口擴展樣式參考列表: 34 35 WS_EX_APPWINDOW - 當窗口可見時將一個頂層窗口放置在任務欄上 36 WS_EX_NOINHERITLAYOUT - 子控件不繼承窗體或控件的佈局 37 WS_EX_LAYOUTRTL - 窗體或控件將具備從右向左的佈局(於是會被鏡像) 38 WS_EX_COMPOSITED - 用雙緩衝從下到上繪製窗口的全部子孫(WinXP以上) 39 WS_EX_NOACTIVATE - 處於頂層但不激活 40 41 42 2、按鈕風格 43 44 BS_AUTOCHECKBOX 同複選按鈕相似,點擊一下選中,再次點擊取消。 45 BS_AUTORADIOBUTTON同單選按鈕相似,點擊後選中標誌將從同組的其餘單選按鈕處移到當前選項。 46 BS_CHECKBOX 複選按鈕 47 BS_DEFPUSHBUTTON 默認普通按鈕,具備較黑的邊框。 48 BS_GROUPBOX 分組框 49 BS_LEFTTEXT 同單選按鈕或複選按鈕配合使用,標題將顯示在左側。 50 BS_OWNERDRAW 可建立一個擁有者自繪按鈕。 51 BS_PUSHBUTTON 普通下壓按鈕 52 BS_RADIOBUTTON 圓形單選按鈕 53 BS_3STATE 三態複選按鈕,三種狀態即:選中,未選中,未定 54 BS_AUTOCHECKBOX 檢查框,按鈕的狀態會自動改變 55 BS_AUTORADIOBUTTON圓形選擇按鈕,按鈕的狀態會自動改變 56 BS_AUTO3STATE 容許按鈕有三種狀態即:選中,未選中,未定 57 BS_CHECKBOX 檢查框 58 BS_LEFTTEXT 左對齊文字 59 60 3、旋轉按鈕控件 61 62 UDS_HORZ 指定一個水平旋轉按鈕.若不指定該風格則建立一個垂直的旋轉按鈕. 63 UDS_WRAP 當旋轉按鈕增大到超過最大值時,自動重置爲最小值,當減少至低於最小值時,自動重置爲最大值. 64 UDS_ARROWKEYS 當用戶按下向下或向上箭頭鍵時,旋轉按鈕值遞增或遞減. 65 UDS_SETBUDDYINT 旋轉按鈕將自動更新夥伴控件中顯示的數值,若是夥伴控件能接受輸入,則可在夥伴控件中輸入新的旋轉按鈕值. 66 UDS_NOTHOUSANDS 夥伴控件中顯示的數值每隔三位沒有千位分隔符. 67 UDS_AUTOBUDDY 自動使旋轉按鈕擁有一個夥伴控件. 68 UDS_ALIGNRIGHT 旋轉按鈕在夥伴控件的右側. 69 UDS_ALIGNLEFT 旋轉按鈕在夥伴控件的左側. 70 71 4、軌道條控件 72 73 TBS_HORZ 指定一個水平軌道條.該風格是默認的. 74 TBS_VERT 指定一個垂直軌道條. 75 TBS_AUTOTICKS 在範圍設定後,自動爲軌道條加上刻度. 76 TBS_NOTICKS 軌道條無刻度. 77 TBS_BOTTOM 在水平軌道條的底部顯示刻度,可與TBS_TOP一塊兒使用. 78 TBS_TOP 在水平軌道條的頂部顯示刻度,可與TBS_BOTTOM一塊兒使用. 79 TBS_RIGHT 在垂直軌道條的右側顯示刻度,可與TBS_LEFT一塊兒使用. 80 TBS_LEFT 在垂直軌道條的左側顯示刻度,可與TBS_RIGHT一塊兒使用. 81 TBS_BOTH 在軌道條的上下部或左右兩側都顯示刻度. 82 TBS_ENABLESELRANGE 在軌道條中顯示一個選擇範圍. 83 84 5、文本編輯框風格 85 86 ES_AUTOHSCROLL 當在行尾添加一個字符後自動向右滾動10個字符。 87 ES_AUTOVSCROLL 當輸入回車後自動上滾一行。 88 ES_CENTER 字符居中顯示。 89 ES_LEFT 字符左對齊。 90 ES_LOWERCASE 統一轉化爲小寫字母。 91 ES_MULTILINE 容許多行顯示。 92 ES_NOHIDESEL 當編輯失去焦點時隱藏對字符的選定,從新得到焦點後以反色顯示選中內容。 93 ES_OEMCONVERT 將ANSI字符轉化爲OEM字符。 94 ES_PASSWORD 以星號顯示字符,多用於回顯密碼。 95 ES_RIGHT 字符右對齊 96 ES_UPPERCASE 統一轉化爲大寫字母。 97 ES_READONLY 設置字符爲只讀。 98 ES_WANTRETURN 接受回車鍵輸入。 99 100 6、列表框風格 101 102 LBS_STANDARD 建立一個具備邊界和垂直滾動條、當選擇發生變化或條目被雙擊時可以通知父窗口的標準列表框。全部條目按字母排序。 103 LBS_SORT 按字母排序。 104 LBS_NOSEL 條目可視但不可選。 105 LBS_NOTIFY 當用戶選擇或雙擊一個串時,發出消息通知父窗口。 106 LBS_DISABLENOSCROLL 在條目很少時依然顯示並不起做用的滾動條。 107 LBS_MULTIPLESEL 容許條目多選。 108 LBS_EXTENDEDSEL 可用SHIFT和鼠標或指定鍵組合來選擇多個條目。 109 LBS_MULTICOLUMN 容許多列顯示。 110 LBS_OWNERDRAWVARIABLE 建立一個擁有者畫列表框,條目高度能夠不一樣。 111 LBS_OWNERDRAWFIXED 建立一個具備相同條目高度的擁有者畫列表框。 112 LBS_USETABSTOPS 容許使用TAB製表符。 113 LBS_NOREDRAW 當條目被增刪後不自動更新列表顯示。 114 LBS_HASSTRINGS 記憶了添加到列表中的字串。 115 LBS_WANTKEYBOARDINPUT 當有鍵按下時向父窗口發送WM_VKEYTOITEM或WM_CHARTOITEM消息。 116 LBS_NOINTEGRALHEIGHT 按程序設定尺寸建立列表框。 117 118 7、組合框風格 119 120 CBS_AUTOHSCROLL 當在行尾輸入字符時自動將編輯框中的文字向右滾動。 121 CBS_DROPDOWN 同CBS_SIMPLE風格相似,只是只有在用戶點擊下拉圖標時纔會顯示出下拉列表。 122 CBS_DROPDOWNLIST 同CBS_DROPDOWN相似,只是顯示當前選項的編輯框爲一靜態框所代替。 123 CBS_HASSTRINGS 建立一個包含了由字串組成的項目的擁有者畫組合框。 124 CBS_OEMCONVERT 將組合框中的ANSI字串轉化爲OEM字符。 125 CBS_OWNERDRAWFIXED 由下拉列表框的擁有者負責對內容的繪製;列表框中各項目高度相同。 126 CBS_OWNERDRAWVARIABLE 由下拉列表框的擁有者負責對內容的繪製;列表框中各項目高度能夠不一樣。 127 CBS_SIMPLE 下拉列表始終顯示。 128 CBS_SORT 自動對下拉列表中的項目進行排序。 129 CBS_DISABLENOSCROLL 當下拉列表顯示內容過少時顯示垂直滾動條。 130 CBS_NOINTEGRALHEIGHT在建立控件時以指定的大小來精確設定組合框尺寸。 131 132 8、樹形視圖控件 133 134 TVS_HASLINES 在父項與子項間連線以清楚地顯示結構. 135 TVS_LINESATROOT 只在根部畫線. 136 TVS_HASBUTTONS 顯示帶有"+"或"-"的小方框來表示某項可否被展開或已展開. 137 TVS_EDITLABELS 用戶能夠編輯表項的標題. 138 TVS_SHOWSELALWAYS 即便控件失去輸入焦點,仍顯示出項的選擇狀態. 139 TVS_DISABLEDRAGDROP 不支持拖動操做. 140 141 9、列表視圖控件 142 143 144 LVS_ALIGNLEFT 當顯示格式是大圖標或小圖標時,標題放在圖標的左邊.缺省狀況下標題放在圖標的下面. 145 LVS_ALIGNTOP 當顯示格式是大圖標或小圖標時,標題放在圖標的上邊. 146 LVS_AUTOARRANGE 當顯示格式是大圖標或小圖標時,自動排列控件中的表項. 147 LVS_EDITLABELS 用戶能夠修改標題. 148 LVS_ICON 指定大圖標顯示格式. 149 LVS_LIST 指定列表顯示格式. 150 LVS_NOCOLUMNHEADER 在報告格式中不顯示列的表頭. 151 LVS_NOLABELWRAP 當顯示格式是大圖標時,使標題單行顯示.缺省時是多行顯示. 152 LVS_NOSCROLL 列表視圖無滾動條. 153 LVS_NOSORTHEADER 報告列表視圖的表頭不能做爲排序按鈕使用. 154 LVS_OWNERDRAWFIXED 由控件的擁有者負責繪製表項. 155 LVS_REPORT 指定報告 顯示格式. 156 LVS_SHAREIMAGELISTS 使列表視圖共享圖像序列. 157 LVS_SHOWSELALWAYS 即便控件失去輸入焦點,仍顯示出項的選擇狀態. 158 LVS_SINGLESEL 指定一個單選擇列表視圖.缺省時能夠多項選擇. 159 LVS_SMALLICON 指定小圖標顯示格式. 160 LVS_SORTASCENDING 按升序排列表項. 161 LVS_SORTDESCENDING 按降序排列表項. 162 163 10、靜態文本框風格 164 165 SS_CENTER 字符居中顯示。 166 SS_LEFT 字符左對齊。 167 SS_LEFTNOWORADWRAP 字符左對齊,可處理TAB製表符,不支持自動換行,超過末尾字符被裁剪。 168 SS_BLACKRECT 用窗口邊框色填充的矩形。 169 SS_BLSCKFRAME 矩形邊框,與窗口邊框同色。 170 SS_GRAYRECT 用屏幕背景色填充的矩行。 171 SS_GRAYFRAME 矩形邊框,使用屏幕背景色。 172 SS_WHITERECT 用窗口背景色填充的矩行。 173 SS_RIGHT 字符右對齊 174 SS_WHITEFRAME 矩形邊框,使用窗口背景色。 175 176 177 178 179 180 /* 控件樣式參考列表: 181 DS_ABSALIGN - 對話框的座標爲屏幕座標(缺省爲客戶區座標) 182 DS_SYSMODAL - 系統模式(僅支持16位程序),不能與DS_CONTROL同用 183 DS_LOCALEDIT - 在對話框內部爲編輯框分配內存(僅支持16位程序) 184 DS_SETFONT - 可定製對話框字體 185 DS_MODALFRAME - 框架樣式(不能與WS_CAPTION同用) 186 DS_NOIDLEMSG - 無空閒消息 187 DS_SETFOREGROUND - 使對話框在最前面顯示 188 DS_3DLOOK - 四周有3維邊框 189 DS_FIXEDSYS - 使用系統固定字體 190 DS_NOFAILCREATE - 忽略建立過程當中的錯誤 191 DS_CONTROL - 控件模式,可做爲其餘對話框的子窗口 192 DS_CENTER - 在屏幕居中 193 DS_CENTERMOUSE - 在鼠標位置居中 194 DS_CONTEXTHELP - 有上下文幫助按鈕 195 196 197 198 /*已知代號的樣式列表 199 GWL_EXSTYLE, "-20" 200 GWL_STYLE, "-16" 201 GWL_WNDPROC, "-4" 202 WS_EX_ACCEPTFILES, "16" 可接受文件拖放 203 WS_EX_APPWINDOW, "262144" 當窗口可見時將一個頂層窗口放置在任務欄上 204 WS_EX_CLIENTEDGE, "512" 帶陰影的邊緣 205 WS_EX_CONTEXTHELP, "1024" 有上下文幫助樣式,標題欄包含一個問號標誌 206 WS_EX_CONTROLPARENT, "65536" 容許用戶使用TAB鍵在窗口的子窗口間搜索 207 WS_EX_DLGMODALFRAME, "1" 帶雙層邊框 208 WS_EX_LEFT, "0" 左對齊 209 WS_EX_LEFTSCROLLBAR, "16384" 垂直滾動條在窗口左邊界 210 WS_EX_LTRREADING, "0" 211 WS_EX_MDICHILD, "64" MDI子窗口樣式 212 WS_EX_NOPARENTNOTIFY, "4" 建立/銷燬時不通知父窗口 213 WS_EX_OVERLAPPEDWINDOW, "768" 帶凸起邊緣的邊框,邊緣有陰影 214 WS_EX_PALETTEWINDOW, "392" 帶立體邊框,有工具條窗口樣式,窗口在頂層 215 WS_EX_RIGHT, "4096" 右對齊 216 WS_EX_RIGHTSCROLLBAR, "0" 垂直滾動條在窗口右邊界 217 WS_EX_RTLREADING, "8192" 窗口文本從右到左顯示 218 WS_EX_STATICEDGE, "131072" 當窗口爲不可用狀態時建立一個三維邊緣 219 WS_EX_TOOLWINDOW, "128" 工具條窗口樣式 220 WS_EX_TOPMOST, "8" 窗口置頂(停留在全部非最高層窗口的上面) 221 WS_EX_TRANSPARENT, "32" 透明樣式,在同屬窗口已重畫時該窗口才可重畫 222 WS_EX_WINDOWEDGE, "256" 帶凸起邊緣的邊框 223 ICON_BIG, "1" 224 ICON_SMALL, "0" 225 WM_SETICON, "128" 226 WS_EX_LAYERED "524288" 分層或透明窗口,該樣式可以使用混合特效