改变WinForm边框的风格?
是否可以改变WinForm边框的样式? 我知道如果边框被删除,它会夺走调整程序大小的function。 因此有没有办法改变它的风格,但保持它可resize?
你寻求的并不简单,因为边界是由操作系统绘制的。 但是,CodePlex上有一个库可以做到这一点。
在Windows窗体中绘制自定义边框
首先在InitializeComponent()中写这个:
public const int WM_NCLBUTTONDOWN = 0xA1; public const int HT_RIGHT = 0xB; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; [DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [DllImport("user32.dll")] public static extern bool ReleaseCapture(); this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Resize_Form);
然后,使用与此类似的方法。 在这种情况下,我的表单只能从右侧resize,但应该很容易从任何一侧resize:
private void Resize_Form(object sender, MouseEventArgs e) { if ((e.Button == MouseButtons.Left) && (MousePosition.X >= this.Location.X + formWidth - 10)) { System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.SizeWE; ReleaseCapture(); SendMessage(Handle, WM_NCLBUTTONDOWN, HT_RIGHT, 0); formWidth = this.Width; } }
我不认为有直接的方法来做到这一点。
但是,您可以将表单边框样式设置为“无”。 并在您的表单中实现resize(我认为这很难)
string position = String.Empty; Point mouseDownPosition = new Point(); private void myForm_MouseDown(object sender, MouseEventArgs e) { position = (eX == 0) ? "Left" : ((eX == myForm.Width) ? "Right" : String.Empty; position += (eY == 0) ? "Top" : ((eY == myForm.Height) ? "Bottom" : String.Empty; if(position != String.Empty) { mouseDownPosition = e.Location; } } private void myForm_MouseMove(object sender, MouseEventArgs e) { if(position != String.Empty) { Point movementOffset = new Point(e.Location.X - mouseDownPosition.X, e.Location.Y - mouseDownPosition.Y); Switch(position) { Case "LeftTop": myForm.Location.X += movementOffset.X; myForm.Location.Y += movementOffset.Y; myForm.Width -= movementOffset.X; myForm.Height -= movementOffset.Y; Case "Left": myForm.Location.X += movementOffset.X; myForm.Width -= movementOffset.X; // Complete the remaining please :) } } } private void myForm_MouseUp(object sender, MouseEventArgs e) { position = String.Empty; }
PS:尚未测试过
希望你将FormBorderStyle设置为None
上述就是C#学习教程:改变WinForm边框的风格?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991860.html