是否可以更改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