前提

入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。

开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control
<https://gitee.com/kwwwvagaa/net_winform_custom_control>

如果觉得写的还行,请点个 star 支持一下吧

欢迎前来交流探讨: 企鹅群568015492  <https://shang.qq.com/wpa/qunwpa?
idkey=6e08741ef16fe53bf0314c1c9e336c4f626047943a8b76bac062361bab6b4f8d>

目录

https://www.cnblogs.com/bfyx/p/11364884.html
<https://www.cnblogs.com/bfyx/p/11364884.html>

准备工作

这个窗体继承子基类窗体FrmBase,如果你对FrmBase还不了解,请移步 (十七)c#Winform自定义控件-基类窗体
<https://www.cnblogs.com/bfyx/p/11363673.html> 查看

开始

添加一个Form,命名FrmTransparent,继承自FrmBase

代码不多,直接上完整代码了
1 // 版权所有 黄正辉 交流群:568015492 QQ:623128629 2 // 文件名称:FrmTransparent.cs 3 //
创建日期:2019-08-15 16:05:00 4 // 功能描述:FrmTransparent 5 // 项目地址:
https://gitee.com/kwwwvagaa/net_winform_custom_control 6 using System; 7 using
System.Collections.Generic; 8 using System.ComponentModel; 9 using
System.Data; 10 using System.Drawing; 11 using System.Linq; 12 using
System.Reflection; 13 using System.Runtime.InteropServices; 14 using
System.Text; 15 using System.Windows.Forms; 16 17 namespace HZH_Controls.Forms
18 { 19 public partial class FrmTransparent : FrmBase 20 { 21 private const
int WM_ACTIVATE = 6; 22 23 private const int WM_ACTIVATEAPP = 28; 24 25
private const int WM_NCACTIVATE = 134; 26 27 private const int WA_INACTIVE = 0
; 28 29 private const int WM_MOUSEACTIVATE = 33; 30 31 private const int
MA_NOACTIVATE =3; 32 33 public FrmBase frmchild 34 { 35 get; 36 set; 37
} 38 public FrmTransparent() 39 { 40 InitializeComponent(); 41 42 base
.SetStyle(ControlStyles.UserPaint,true); 43 base
.SetStyle(ControlStyles.AllPaintingInWmPaint,true); 44 base
.SetStyle(ControlStyles.DoubleBuffer,true); 45 46 MethodInfo method = base
.GetType().GetMethod("SetStyle", BindingFlags.Instance | BindingFlags.NonPublic
| BindingFlags.InvokeMethod); 47 method.Invoke(this, BindingFlags.Instance |
BindingFlags.NonPublic | BindingFlags.InvokeMethod,null, new object[] 48 { 49
ControlStyles.Selectable, 50 false 51 }, Application.CurrentCulture); 52 }
53 54 protected override void OnLoad(EventArgs e) 55 { 56 base.OnLoad(e);
57 base.ShowInTaskbar = false; 58 base.ShowIcon = true; 59 } 60 [DllImport("
user32.dll")] 61 private static extern IntPtr SetActiveWindow(IntPtr handle);
62 63 protected override void WndProc(ref Message m) 64 { 65 if (m.Msg == 33
) 66 { 67 m.Result = new IntPtr(3); 68 } 69 else 70 { 71 if (m.Msg ==
134) 72 { 73 if (((int)m.WParam & 65535) != 0) 74 { 75 if (m.LParam !=
IntPtr.Zero) 76 { 77 FrmTransparent.SetActiveWindow(m.LParam); 78 } 79
else 80 { 81 FrmTransparent.SetActiveWindow(IntPtr.Zero); 82 } 83 } 84
} 85 else if (m.Msg == 2000) 86 { 87 } 88 base.WndProc(ref m); 89 } 90
} 91 92 private void FrmTransparent_Load(object sender, EventArgs e) 93 {
94 if (frmchild != null) 95 { 96 frmchild.IsShowMaskDialog = false; 97 var
dia = frmchild.ShowDialog(this); 98 this.DialogResult = dia; 99 } 100 } 101
}102 } View Code 1 namespace HZH_Controls.Forms 2 { 3 partial class
FrmTransparent 4 { 5 /// <summary> 6 /// Required designer variable. 7 ///
</summary> 8 private System.ComponentModel.IContainer components = null; 9 10
/// <summary> 11 /// Clean up any resources being used. 12 /// </summary> 13 ///
<param name="disposing">true if managed resources should be disposed;
otherwise, false.</param> 14 protected override void Dispose(bool disposing) 15
{16 if (disposing && (components != null)) 17 { 18 components.Dispose(); 19
}20 base.Dispose(disposing); 21 } 22 23 #region Windows Form Designer
generated code24 25 /// <summary> 26 /// Required method for Designer support -
do not modify27 /// the contents of this method with the code editor. 28 ///
</summary> 29 private void InitializeComponent() 30 { 31
System.ComponentModel.ComponentResourceManager resources =new
System.ComponentModel.ComponentResourceManager(typeof(FrmTransparent)); 32 this
.SuspendLayout();33 // 34 // FrmTransparent 35 // 36 this.AutoScaleMode =
System.Windows.Forms.AutoScaleMode.None;37 this.BackColor =
System.Drawing.Color.Black;38 this.ClientSize = new System.Drawing.Size(284, 262
);39 this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 40
this.Name = "FrmTransparent"; 41 this.Opacity = 0.5D; 42 this.ShowIcon = false;
43 this.ShowInTaskbar = false; 44 this.StartPosition =
System.Windows.Forms.FormStartPosition.CenterParent;45 this.Text = "
FrmTransparent"; 46 this.Load += new System.EventHandler(this
.FrmTransparent_Load);47 this.ResumeLayout(false); 48 49 } 50 51 #endregion 52
}53 } View Code
主要就是构造函数和load事件里面的那几句话

用处及效果

用途:一般用在蒙版,比如弹出窗口的时候,显示一个半透明蒙版

最后的话

如果你喜欢的话,请到 https://gitee.com/kwwwvagaa/net_winform_custom_control
<https://gitee.com/kwwwvagaa/net_winform_custom_control> 点个星 星吧

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信