簡體   English   中英

如何更改表格邊框顏色 c#?

[英]How to change the form border color c#?

我想更改 window 表單邊框顏色(帶有表單標題的邊框)。 我在codeplex中找到的示例太多且令人困惑。 任何人都可以幫助我做一些更簡單的事情嗎?

覆蓋它:

protected override void OnPaint(PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, ClientRectangle, Color.[your_color], ButtonBorderStyle.Solid);
}

不幸的是,由於表單邊框是由操作系統繪制的,因此這是一項復雜的任務 沒有真正的解決辦法。

請勿單擊下方 CodePlex 頁面上的 ProjectDistributor 鏈接

不過,用於繪制自定義邊框CodePlex 項目使這變得非常容易。 只需使用該項目中的 SkinnedForm 而不是標准表單來構建表單,它應該可以工作 - 您真的不需要在代碼中做任何不同的事情。

解決方法 - 只需按照以下步驟操作:

  • FormBorderStyle設置為None
  • 用面板覆蓋表單並為邊框留出一些空間。
  • 將您想要的邊框顏色設置為表單背景顏色。

現在,面板充當主容器,您可以根據需要更改背景,表單充當邊框。

最終結果

在此處輸入圖片說明

這在 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);
    }

如前所述,更改邊框的實際顏色很困難。 上面的面板解決方案有一些限制,比如你不能調整表單的大小。 我發現了一個相當簡單的技巧,沒有很多其他限制。

  • 創建表格
  • 將 FormBorderStyle 設置為無
  • 添加4個面板
  • 將面板的背景顏色設置為您想要的邊框顏色
  • 在頂部、底部、左側和右側各錨一個
  • 將高度(頂部/底部)或寬度(左/右)設置為所需邊框的厚度。 2 或 3 看起來非常好。

它看起來像一個邊框,它會隨着窗口調整大小,您可以將任何其他內容放入您想要的表單中。 限制是,您必須將此作為添加到表單的第一件事。

在“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM