WinForm自定义控件(颜色设置控件)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SelfColorControl
{
public partial class ColorControl : UserControl
{
public ColorControl()
{
InitializeComponent();
this.Size = this.panelColor.Size;
}

private void SetPanelColor()
{
int r = Convert.ToInt32(this.textBoxRed.Text.ToString());
int g = Convert.ToInt32(this.textBoxGreen.Text.ToString());
int b = Convert.ToInt32(this.textBoxBlue.Text.ToString());
this.panelColor.BackColor = Color.FromArgb(r, g, b);
}

#region Property

//当前颜色值
[Description("当前颜色值"), DefaultValue(0), Category("Data")]
public Color CurValue
{
get { return this.panelColor.BackColor; }
set
{
this.panelColor.BackColor = value;
//改变控件值
this.textBoxRed.Text = value.R.ToString();
this.textBoxGreen.Text = value.G.ToString();
this.textBoxBlue.Text = value.B.ToString();
this.trackBarRed.Value = Convert.ToInt32(value.R.ToString());
this.trackBarGreen.Value = Convert.ToInt32(value.G.ToString());
this.trackBarBlue.Value = Convert.ToInt32(value.B.ToString());
}
}

#endregion

#region Event

public delegate void ColorValueChangedHandler(object sender, EventArgs e);
[Description(
"颜色值变化"), Category("Mouse")]
public event ColorValueChangedHandler ValueChanged;

#endregion

private void trackBarRed_ValueChanged(object sender, EventArgs e)
{
this.textBoxRed.Text = this.trackBarRed.Value.ToString();
SetPanelColor();
if (null != ValueChanged)
{
ValueChanged(sender, e);
}
}

private void trackBarGreen_ValueChanged(object sender, EventArgs e)
{
this.textBoxGreen.Text = this.trackBarGreen.Value.ToString();
SetPanelColor();
if (null != ValueChanged)
{
ValueChanged(sender, e);
}
}

private void trackBarBlue_ValueChanged(object sender, EventArgs e)
{
this.textBoxBlue.Text = this.trackBarBlue.Value.ToString();
SetPanelColor();
if (null != ValueChanged)
{
ValueChanged(sender, e);
}
}

private void panelColor_Click(object sender, EventArgs e)
{
m_bShowAll
= !m_bShowAll;
if (m_bShowAll)
{
Size sz
= new Size(200, 150);
this.Size = sz;
}
else
{
this.Size = this.panelColor.Size;
}
}

private void textBoxRed_TextChanged(object sender, EventArgs e)
{
this.trackBarRed.Value = Convert.ToInt32(this.textBoxRed.Text.ToString());
}

private void textBoxGreen_TextChanged(object sender, EventArgs e)
{
this.trackBarGreen.Value = Convert.ToInt32(this.textBoxGreen.Text.ToString());
}

private void textBoxBlue_TextChanged(object sender, EventArgs e)
{
this.trackBarBlue.Value = Convert.ToInt32(this.textBoxBlue.Text.ToString());
}
}
}
原文地址:https://www.cnblogs.com/sifenkesi/p/2014592.html