C# 如何制作可供选择的颜色网格?

C# 如何制作可供选择的颜色网格?,c#,winforms,colors,palette,C#,Winforms,Colors,Palette,我如何制作一种带有颜色的网格,可以选择并在选择时保存到字段中?就像Twitch中的聊天选项一样 Windows窗体提供了颜色对话框 ColorDialog colorDialog = new ColorDialog(); colorDialog.ShowDialog(); 可以使用以下命令调用所选颜色: colorDialog.Color Windows窗体提供了颜色对话框 ColorDialog colorDialog = new ColorDialog(); colorDialog.Sh

我如何制作一种带有颜色的网格,可以选择并在选择时保存到字段中?就像Twitch中的聊天选项一样


Windows窗体提供了颜色对话框

ColorDialog colorDialog = new ColorDialog();
colorDialog.ShowDialog();
可以使用以下命令调用所选颜色:

colorDialog.Color

Windows窗体提供了颜色对话框

ColorDialog colorDialog = new ColorDialog();
colorDialog.ShowDialog();
可以使用以下命令调用所选颜色:

colorDialog.Color

Windows窗体提供了颜色对话框

ColorDialog colorDialog = new ColorDialog();
colorDialog.ShowDialog();
可以使用以下命令调用所选颜色:

colorDialog.Color

Windows窗体提供了颜色对话框

ColorDialog colorDialog = new ColorDialog();
colorDialog.ShowDialog();
可以使用以下命令调用所选颜色:

colorDialog.Color

您只需要TableLayoutPanel和每个单元格的面板:

public partial class MainForm : Form
{
    private Color selected_color;
    private List<Color> colors;
    public MainForm()
    {
        InitializeComponent();
        colors = new List<Color>();
        colors.Add(Color.Red);
        colors.Add(Color.Green);
        colors.Add(Color.Blue);
        colors.Add(Color.Yellow);
        colors.Add(Color.Teal);
        colors.Add(Color.RosyBrown);
        colors.Add(Color.Lime);
        colors.Add(Color.Gray);
        tableLayoutPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
        for (byte i = 0; i < tableLayoutPanel.Controls.Count; i++)
        {
            Panel p = tableLayoutPanel.Controls[i] as Panel;
            p.BackColor = colors[i];
            p.Click += panel_click;
        }
    }
    private void panel_click(object sender, EventArgs e)
    {
        Panel p = sender as Panel;
        selected_color = p.BackColor;
        lbl_color.Text = selected_color.ToString();
        lbl_color.ForeColor = selected_color;
    }
    private void btn_showMoreColours_Click(object sender, EventArgs e)
    {
        Panel[] panels = new Panel[4];
        for (byte i = 0; i < panels.Length; i++)
        {
            panels[i] = new Panel();
            panels[i].Dock = DockStyle.Fill;
            panels[i].Location = new System.Drawing.Point(3, 3);
            panels[i].Name = "panel" + (i + 4);
            panels[i].Size = new System.Drawing.Size(123, 100);
            panels[i].BackColor = colors[i + 4];
            panels[i].Click += panel_click;
            tableLayoutPanel.Controls.Add(panels[i]);
        }
        Size = new Size(Size.Width, Size.Height * 2);
    }
}
public分部类MainForm:Form
{
所选的专用颜色;
私有列表颜色;
公共表格(
{
初始化组件();
颜色=新列表();
颜色。添加(颜色。红色);
颜色。添加(颜色。绿色);
颜色。添加(颜色。蓝色);
颜色。添加(颜色。黄色);
添加(Color.Teal);
colors.Add(Color.RosyBrown);
颜色。添加(颜色。石灰);
颜色。添加(颜色。灰色);
tableLayoutPanel.CellBorderStyle=TableLayoutPanelCellBorderStyle.OutsetDouble;
对于(字节i=0;i
单击单元格后,您将在“选定颜色”字段中获得颜色。

编辑:

此外,还添加了“显示更多颜色”按钮。它将展开如下所示:


您只需要TableLayoutPanel和每个单元格的面板:

public partial class MainForm : Form
{
    private Color selected_color;
    private List<Color> colors;
    public MainForm()
    {
        InitializeComponent();
        colors = new List<Color>();
        colors.Add(Color.Red);
        colors.Add(Color.Green);
        colors.Add(Color.Blue);
        colors.Add(Color.Yellow);
        colors.Add(Color.Teal);
        colors.Add(Color.RosyBrown);
        colors.Add(Color.Lime);
        colors.Add(Color.Gray);
        tableLayoutPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
        for (byte i = 0; i < tableLayoutPanel.Controls.Count; i++)
        {
            Panel p = tableLayoutPanel.Controls[i] as Panel;
            p.BackColor = colors[i];
            p.Click += panel_click;
        }
    }
    private void panel_click(object sender, EventArgs e)
    {
        Panel p = sender as Panel;
        selected_color = p.BackColor;
        lbl_color.Text = selected_color.ToString();
        lbl_color.ForeColor = selected_color;
    }
    private void btn_showMoreColours_Click(object sender, EventArgs e)
    {
        Panel[] panels = new Panel[4];
        for (byte i = 0; i < panels.Length; i++)
        {
            panels[i] = new Panel();
            panels[i].Dock = DockStyle.Fill;
            panels[i].Location = new System.Drawing.Point(3, 3);
            panels[i].Name = "panel" + (i + 4);
            panels[i].Size = new System.Drawing.Size(123, 100);
            panels[i].BackColor = colors[i + 4];
            panels[i].Click += panel_click;
            tableLayoutPanel.Controls.Add(panels[i]);
        }
        Size = new Size(Size.Width, Size.Height * 2);
    }
}
public分部类MainForm:Form
{
所选的专用颜色;
私有列表颜色;
公共表格(
{
初始化组件();
颜色=新列表();
颜色。添加(颜色。红色);
颜色。添加(颜色。绿色);
颜色。添加(颜色。蓝色);
颜色。添加(颜色。黄色);
添加(Color.Teal);
colors.Add(Color.RosyBrown);
颜色。添加(颜色。石灰);
颜色。添加(颜色。灰色);
tableLayoutPanel.CellBorderStyle=TableLayoutPanelCellBorderStyle.OutsetDouble;
对于(字节i=0;i
单击单元格后,您将在“选定颜色”字段中获得颜色。

编辑:

此外,还添加了“显示更多颜色”按钮。它将展开如下所示:


您只需要TableLayoutPanel和每个单元格的面板:

public partial class MainForm : Form
{
    private Color selected_color;
    private List<Color> colors;
    public MainForm()
    {
        InitializeComponent();
        colors = new List<Color>();
        colors.Add(Color.Red);
        colors.Add(Color.Green);
        colors.Add(Color.Blue);
        colors.Add(Color.Yellow);
        colors.Add(Color.Teal);
        colors.Add(Color.RosyBrown);
        colors.Add(Color.Lime);
        colors.Add(Color.Gray);
        tableLayoutPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
        for (byte i = 0; i < tableLayoutPanel.Controls.Count; i++)
        {
            Panel p = tableLayoutPanel.Controls[i] as Panel;
            p.BackColor = colors[i];
            p.Click += panel_click;
        }
    }
    private void panel_click(object sender, EventArgs e)
    {
        Panel p = sender as Panel;
        selected_color = p.BackColor;
        lbl_color.Text = selected_color.ToString();
        lbl_color.ForeColor = selected_color;
    }
    private void btn_showMoreColours_Click(object sender, EventArgs e)
    {
        Panel[] panels = new Panel[4];
        for (byte i = 0; i < panels.Length; i++)
        {
            panels[i] = new Panel();
            panels[i].Dock = DockStyle.Fill;
            panels[i].Location = new System.Drawing.Point(3, 3);
            panels[i].Name = "panel" + (i + 4);
            panels[i].Size = new System.Drawing.Size(123, 100);
            panels[i].BackColor = colors[i + 4];
            panels[i].Click += panel_click;
            tableLayoutPanel.Controls.Add(panels[i]);
        }
        Size = new Size(Size.Width, Size.Height * 2);
    }
}
public分部类MainForm:Form
{
所选的专用颜色;
私有列表颜色;
公共表格(
{
初始化组件();
颜色=新列表();
颜色。添加(颜色。红色);
颜色。添加(颜色。绿色);
颜色。添加(颜色。蓝色);
颜色。添加(颜色。黄色);
添加(Color.Teal);
colors.Add(Color.RosyBrown);
颜色。添加(颜色。石灰);
颜色。添加(颜色。灰色);
tableLayoutPanel.CellBorderStyle=TableLayoutPanelCellBorderStyle.OutsetDouble;
对于(字节i=0;i