SimpleTitleForm.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using System;
  2. using System.ComponentModel;
  3. using System.Drawing;
  4. using System.Linq;
  5. using System.Runtime.InteropServices;
  6. using System.Windows.Forms;
  7. namespace CustomWindow.Forms
  8. {
  9. public partial class SimpleTitleForm : Form
  10. {
  11. #region 属性
  12. //窗体边框粗细
  13. private int _Border = 1;
  14. [Category("Style")]
  15. [Description("窗体边框粗细")]
  16. [DefaultValue(typeof(int), "1")]
  17. public int Border
  18. {
  19. get { return _Border; }
  20. set
  21. {
  22. if (_Border != value)
  23. {
  24. _Border = value;
  25. SetBorder();
  26. }
  27. }
  28. }
  29. //窗体边框颜色
  30. private Color _BorderColor = Color.Black;
  31. [Category("Style")]
  32. [Description("窗体边框颜色")]
  33. [DefaultValue(typeof(Color), "Black")]
  34. public Color BorderColor
  35. {
  36. get { return _BorderColor; }
  37. set
  38. {
  39. if (_BorderColor != value)
  40. {
  41. _BorderColor = value;
  42. SetBorder();
  43. }
  44. }
  45. }
  46. #endregion
  47. public SimpleTitleForm()
  48. {
  49. InitializeComponent();
  50. }
  51. private void NoTitleForm_Load(object sender, EventArgs e)
  52. {
  53. SetTitle();
  54. SetBorder();
  55. }
  56. /// <summary>
  57. /// 设置窗口边框
  58. /// </summary>
  59. protected void SetBorder()
  60. {
  61. if (_Border > 0)
  62. {
  63. Label BorderTop = new Label();
  64. BorderTop.BackColor = _BorderColor;
  65. BorderTop.Width = Width;
  66. BorderTop.Height = _Border;
  67. Controls.Add(BorderTop);
  68. BorderTop.BringToFront();
  69. BorderTop.Top = 0;
  70. BorderTop.Left = 0;
  71. Label BorderBottom = new Label();
  72. BorderBottom.BackColor = _BorderColor;
  73. BorderBottom.Width = Width;
  74. BorderBottom.Height = _Border;
  75. Controls.Add(BorderBottom);
  76. BorderBottom.BringToFront();
  77. BorderBottom.Top = Height - _Border;
  78. BorderBottom.Left = 0;
  79. Label BorderLeft = new Label();
  80. BorderLeft.BackColor = _BorderColor;
  81. BorderLeft.Width = _Border;
  82. BorderLeft.Height = Height;
  83. Controls.Add(BorderLeft);
  84. BorderLeft.BringToFront();
  85. BorderLeft.Top = 0;
  86. BorderLeft.Left = 0;
  87. Label BorderRight = new Label();
  88. BorderRight.BackColor = _BorderColor;
  89. BorderRight.Width = _Border;
  90. BorderRight.Height = Height;
  91. Controls.Add(BorderRight);
  92. BorderRight.BringToFront();
  93. BorderRight.Top = 0;
  94. BorderRight.Left = Width - _Border;
  95. }
  96. }
  97. /// <summary>
  98. /// 设置图标和标题
  99. /// </summary>
  100. protected void SetTitle()
  101. {
  102. label1.Text = Text;
  103. }
  104. #region API
  105. [DllImport("user32.dll")]
  106. public static extern bool ReleaseCapture();
  107. [DllImport("user32.dll")]
  108. public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
  109. #endregion
  110. private void BTClose_Click(object sender, EventArgs e)
  111. {
  112. Close();
  113. }
  114. private void label1_MouseMove(object sender, MouseEventArgs e)
  115. {
  116. if (e.Button == MouseButtons.Left)
  117. {
  118. ReleaseCapture();
  119. SendMessage(Handle, 0x00A1, 2, 0);
  120. }
  121. }
  122. }
  123. }