是否可以更改WinForm边框的样式?我知道如果删除了边框,它将失去调整程序大小的功能。因此有没有办法改变它的风格,但保持它的可调整大小?更改WinForm边框的样式?
3
A
回答
6
您寻求的并不简单,因为边框是由操作系统绘制的。不过,CodePlex上有一个库可以做到这一点。
0
我不认为有一个直接的方式来做到这一点。
但是,您可以将窗体边框样式设置为无。 并在您的表单中实施调整大小(我认为它不是很难)
0
string position = String.Empty;
Point mouseDownPosition = new Point();
private void myForm_MouseDown(object sender, MouseEventArgs e)
{
position = (e.X == 0) ? "Left" : ((e.X == myForm.Width) ? "Right" : String.Empty;
position += (e.Y == 0) ? "Top" : ((e.Y == 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
1
先写这在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);
然后,使用类似于此的方法。在这种情况下,我的方式是从右侧只可调整大小的,但应该很容易让来自任何方面的调整:因为游标不再对大小光标变化,当你移动
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;
}
}
相关问题
- 1. 更改LightBox Primefaces的样式边框
- 2. 更改图库中的边框样式
- 3. tabcontrol ownerdraw更改tabcontrol的边框样式
- 4. 更改tkinter窗口边框样式
- 5. 在Firefox中更改边框样式
- 6. QLineEdit的改变边框颜色不改变边框样式
- 7. 如何更改图片框(winform)的边框颜色?
- 8. 边框样式
- 9. Draggable WinForm(覆盖)与控件无边框样式
- 10. 用平面样式更改ToolStripComboBox的边框
- 11. 更改事件时输入元素的样式边框
- 12. 如何在Swift2中更改CGRect的边框样式?
- 13. 如何更改平面按钮样式的边框颜色
- 14. 更改鼠标周围边框的样式
- 15. 如何更改多的UITextField边框样式和颜色
- 16. jquery更改所有指定div的边框样式
- 17. NavigationMenu.ImageUrl边框样式?
- 18. XAML边框样式
- 19. 表边框样式
- 20. Monodroid:更改edittext样式(边框为红色),并返回默认样式
- 21. WPF的ListView样式边框
- 22. 带边框的HTML样式
- 23. p:panelGrid中的边框样式
- 24. 如何在输入时更改TextBox边框颜色和样式?
- 25. Javascript一次更改多个元素边框样式onclick
- 26. Android更改微调主题/底部边框样式
- 27. 在IE中为样式选择边框更改箭头按钮
- 28. 如何在面板中更改边框样式?
- 29. 我怎样才能获得所有winform窗体边框样式在c#
- 30. 无边界Winform的1px边框
调整大小可能不平凡将鼠标移动到窗体的边缘。 – anonymous 2010-04-10 13:09:11
我可以把面板放在我的表格上,就像上面的图片一样。然后,当有人调整面板大小时,是否调整了我的表单大小?我可以将面板锚定到顶部,底部,左侧和右侧,使其始终与表单的大小相同。你知道我可以用来做这个的任何代码吗? – 2010-04-10 15:43:24
@MrRoys - 改变光标将是人类可以做的最容易的事情。 – SysAdmin 2010-04-10 16:56:32