日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# Winform 窗体美化(十、自定义窗体)

發布時間:2025/3/11 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# Winform 窗体美化(十、自定义窗体) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

十、自定義窗體

寫在前面

最近在做 winform 應用程序,需要自定義一種窗口的樣式,所以就隨便搞了一個簡單的窗口。

效果圖

有兩種樣式,界面如下:
無標題:

有標題:

關鍵詞

1、黑色描邊邊框

對于窗口去掉原生的邊框這個操作很簡單【設置FormBorderStyle為None】,但是去掉邊框之后略顯生硬,所以就考慮如何做一個描邊。

方案a:用畫筆畫出來,但是畫出來的描邊會被控件擋住,所以作廢;
方案b:使用4個label,設置長寬和顏色,設置為最頂層,分別擺放在上下左右四個邊緣位置,現在來看效果還不錯,因為是控件是最頂層的原因,所以也不會被擋住,【如果你看到此處有什么好主意一定告知一下,先謝過了 ^_^ 】

2、拖動窗口移動

由于設置FormBorderStyle為None的原因,所以原來窗口標題的拖動功能也一并去除了,所以需要重新來手動實現原來標題的移動功能,重寫OnMouseMove方法即可,代碼如下:

protected override void OnMouseMove(MouseEventArgs e) {base.OnMouseMove(e);if (e.Button == MouseButtons.Left){//這里一定要判斷鼠標左鍵按下狀態,否則會出現一個很奇葩的BUG,不信邪可以試一下~~ReleaseCapture();SendMessage(Handle, 0x00A1, 2, 0);} }[DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

3、關于窗口屬性的添加

因為我做了描邊的功能,所以相對應的,應該會有一個描邊粗細的設置,當然放到屬性面板里最好,這里貼一下如何在屬性面板里添加新項目:

private int _Border = 1; [Category("Style")] [Description("窗體邊框粗細")] [DefaultValue(typeof(int), "1")] public int Border {get { return _Border; }set{if (_Border != value){_Border = value;SetBorder();}} }

具體解釋可以再VS看到,都很詳細。

源碼

下載

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C# Winform 窗体美化(十、自定义窗体)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。