[英]How to change the form border color c#?
覆蓋它:
protected override void OnPaint(PaintEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics, ClientRectangle, Color.[your_color], ButtonBorderStyle.Solid);
}
不幸的是,由於表單邊框是由操作系統繪制的,因此這是一項復雜的任務。 沒有真正的解決辦法。
請勿單擊下方 CodePlex 頁面上的 ProjectDistributor 鏈接
不過,用於繪制自定義邊框的CodePlex 項目使這變得非常容易。 只需使用該項目中的 SkinnedForm 而不是標准表單來構建表單,它應該可以工作 - 您真的不需要在代碼中做任何不同的事情。
這在 Windows 10 和 11 中適用於我:
private string ToBgr(Color c) => $"{c.B:X2}{c.G:X2}{c.R:X2}";
[DllImport("DwmApi")]
private static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, int[] attrValue, int attrSize);
const int DWWMA_CAPTION_COLOR = 35;
public void SetTitleBarColor(Color color, IntPtr handle)
{
IntPtr hWnd = handle;
int[] colorstr = new int[] { int.Parse(ToBgr(color), System.Globalization.NumberStyles.HexNumber) };
DwmSetWindowAttribute(hWnd, DWWMA_CAPTION_COLOR, colorstr, 4);
}
如前所述,更改邊框的實際顏色很困難。 上面的面板解決方案有一些限制,比如你不能調整表單的大小。 我發現了一個相當簡單的技巧,沒有很多其他限制。
它看起來像一個邊框,它會隨着窗口調整大小,您可以將任何其他內容放入您想要的表單中。 限制是,您必須將此作為添加到表單的第一件事。
在“ForeColor”下方,它們應該是一個名為“FormBorderStyle”的設置,您可以在 VisualStudio 2015 中使用該設置進行編輯。或者您可以進入控制面板路徑應該是這樣的“控制面板\\外觀和個性化\\個性化”,它們將是一個稱為“顏色”的第二個設置可以將其更改為您想要的顏色,它將所有程序中的邊界顏色更改為您設置的顏色。
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
string color = Convert.ToString(colorDialog1.Color);
MessageBox.Show("You change the color " + color);
this.BackColor = colorDialog1.Color; // BackColor is only accessible for this form
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.