首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# ColorDialog 顏色對話框完整應用:屬性速查、自定義顏色與 RichTextBox 套用實戰

     編輯:關於C#

常用屬性速查

屬性功能建議值
AllowFullOpen允許使用者點擊「自訂顏色」展開面板true
FullOpen啟動時直接展開自訂面板false(視需求)
AnyColor允許選擇非調色盤顏色true
SolidColorOnly僅顯示純色,隱藏漸層/系統色false
ShowHelp顯示說明按鈕true
Color預設/回傳選取顏色綁定 RichTextBox.SelectionColor
CustomColors自訂顏色陣列(int[],Win32 COLORREF 格式)持久化使用者偏好

基礎範例:套用至 RichTextBox 選取文字


private void btnColor_Click(object sender, EventArgs e)
{
    using (var dlg = new ColorDialog())
    {
        dlg.Color = richTextBox.SelectionColor;
        dlg.AllowFullOpen = true;
        dlg.AnyColor = true;
        dlg.ShowHelp = true;

        if (dlg.ShowDialog() == DialogResult.OK)
            richTextBox.SelectionColor = dlg.Color;
    }
}

進階:持久化自訂顏色


// 設定檔儲存 int[] (Properties.Settings.Default.CustomColors)
private void btnColor_Click(object sender, EventArgs e)
{
    using (var dlg = new ColorDialog())
    {
        dlg.Color = richTextBox.SelectionColor;
        dlg.CustomColors = Properties.Settings.Default.CustomColors ?? new int[16];
        dlg.AllowFullOpen = true;

        if (dlg.ShowDialog() == DialogResult.OK)
        {
            richTextBox.SelectionColor = dlg.Color;
            Properties.Settings.Default.CustomColors = dlg.CustomColors;
            Properties.Settings.Default.Save();
        }
    }
}

WPF 專案呼叫 WinForms ColorDialog


// 參考 System.Windows.Forms, System.Drawing
using System.Windows.Forms;

var dlg = new ColorDialog { Color = (System.Drawing.Color)ColorConverter.ConvertFromString("#FF0000") };
if (dlg.ShowDialog() == DialogResult.OK)
{
    var wpfColor = System.Windows.Media.Color.FromArgb(dlg.Color.A, dlg.Color.R, dlg.Color.G, dlg.Color.B);
    // 使用 wpfColor...
}

常見問題

  • ColorDialog 為 Modal:會阻塞呼叫執行緒,UI 執行緒上呼叫安全。
  • CustomColors 長度固定 16:陣列長度不足會拋例外,初始化時請 new int[16]。
  • 顏色格式:WinForms Color 為 ARGB(Color.ToArgb()),WPF Color 為 ScRGB,互轉需注意 Alpha 通道。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved