using System;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace CustomWindow.Forms
{
public partial class SimpleTitleForm : Form
{
#region 属性
//窗体边框粗细
private int _Border = 1;
[Category("Style")]
[Description("窗体边框粗细")]
[DefaultValue(typeof(int), "1")]
public int Border
{
get { return _Border; }
set
{
if (_Border != value)
{
_Border = value;
SetBorder();
}
}
}
//窗体边框颜色
private Color _BorderColor = Color.Black;
[Category("Style")]
[Description("窗体边框颜色")]
[DefaultValue(typeof(Color), "Black")]
public Color BorderColor
{
get { return _BorderColor; }
set
{
if (_BorderColor != value)
{
_BorderColor = value;
SetBorder();
}
}
}
#endregion
public SimpleTitleForm()
{
InitializeComponent();
}
private void NoTitleForm_Load(object sender, EventArgs e)
{
SetTitle();
SetBorder();
}
///
/// 设置窗口边框
///
protected void SetBorder()
{
if (_Border > 0)
{
Label BorderTop = new Label();
BorderTop.BackColor = _BorderColor;
BorderTop.Width = Width;
BorderTop.Height = _Border;
Controls.Add(BorderTop);
BorderTop.BringToFront();
BorderTop.Top = 0;
BorderTop.Left = 0;
Label BorderBottom = new Label();
BorderBottom.BackColor = _BorderColor;
BorderBottom.Width = Width;
BorderBottom.Height = _Border;
Controls.Add(BorderBottom);
BorderBottom.BringToFront();
BorderBottom.Top = Height - _Border;
BorderBottom.Left = 0;
Label BorderLeft = new Label();
BorderLeft.BackColor = _BorderColor;
BorderLeft.Width = _Border;
BorderLeft.Height = Height;
Controls.Add(BorderLeft);
BorderLeft.BringToFront();
BorderLeft.Top = 0;
BorderLeft.Left = 0;
Label BorderRight = new Label();
BorderRight.BackColor = _BorderColor;
BorderRight.Width = _Border;
BorderRight.Height = Height;
Controls.Add(BorderRight);
BorderRight.BringToFront();
BorderRight.Top = 0;
BorderRight.Left = Width - _Border;
}
}
///
/// 设置图标和标题
///
protected void SetTitle()
{
label1.Text = Text;
}
#region API
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
#endregion
private void BTClose_Click(object sender, EventArgs e)
{
Close();
}
private void label1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, 0x00A1, 2, 0);
}
}
}
}