FpSpread中实现颜色选择ComboBox的方法
来源:互联网 发布:mac canada 编辑:程序博客网 时间:2024/05/21 10:14
一,FpSpread中实现选择颜色的方法很多中,正好拿来练练手,选了一种最麻烦的。其实可以利用FpSpread中本身提供的方法完全可以实现。
/// <summary>
/// 选择颜色的ComboBox
/// </summary>
public partial class ComboBoxCellTypeForColor : FarPoint.Win.Spread.CellType.ComboBoxCellType
{
private ComboBox _cmb = new ComboBox();
private object[] m_strItems;
/// <summary>
///
/// </summary>
public ComboBoxCellTypeForColor()
: base()
{
_cmb.DrawMode = DrawMode.OwnerDrawFixed;
_cmb.DropDownStyle = ComboBoxStyle.DropDownList;
_cmb.DrawItem += new DrawItemEventHandler(combo_DrawItem);
}
/// <summary>
/// ComboBox取得
/// </summary>
public ComboBox ComboBox
{
get { return _cmb; }
}
/// <summary>
/// Item取得和設定
/// </summary>
public object[] Items
{
get
{
return m_strItems;
}
set
{
m_strItems = value;
_cmb.Items.AddRange(m_strItems);
}
}
/// <summary>
/// 编辑中的Control取得
/// </summary>
/// <param name="appearance"></param>
/// <param name="zoomFactor"></param>
/// <returns></returns>
public override Control GetEditorControl(FarPoint.Win.Spread.Appearance appearance, float zoomFactor)
{
return _cmb;
}
/// <summary>
/// 编辑控件的値取得
/// </summary>
/// <returns></returns>
public override object GetEditorValue()
{
return _cmb.SelectedItem == null ? "" : ColorTranslator.ToHtml((Color)_cmb.SelectedItem).Trim('#');
}
/// <summary>
/// 编辑控件的值设定
/// </summary>
/// <param name="value"></param>
public override void SetEditorValue(object value)
{
_cmb.SelectedItem = value;
}
/// <summary>
/// Cell编辑开始
/// </summary>
/// <param name="e"></param>
/// <param name="selectAll"></param>
/// <param name="autoClipboard"></param>
public override void StartEditing(EventArgs e, bool selectAll, bool autoClipboard)
{
base.StartEditing(e, selectAll, autoClipboard);
}
/// <summary>
/// Cell编辑结束
/// </summary>
/// <returns></returns>
public override bool StopEditing()
{
return base.StopEditing();
}
/// <summary>
/// 非编辑中的Cell描画
/// </summary>
/// <param name="g"></param>
/// <param name="r"></param>
/// <param name="appearance"></param>
/// <param name="value"></param>
/// <param name="isSelected"></param>
/// <param name="isLocked"></param>
/// <param name="zoomFactor"></param>
public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
{
base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
System.Drawing.RectangleF RectBack = new RectangleF(r.Left + 1, r.Top + 1, r.Width - 19, r.Height - 2);
SolidBrush BackBrush;
if (_cmb.SelectedIndex == -1)
{
BackBrush = new SolidBrush(Color.White);
}
else
{
BackBrush = new SolidBrush((Color)_cmb.Items[_cmb.SelectedIndex]);
}
g.FillRectangle(BackBrush, RectBack);
}
/// <summary>
/// 颜色选择变更是发生事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void combo_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0) return;
System.Drawing.Rectangle rect = e.Bounds;
SolidBrush bSolidBrush = new SolidBrush((Color)_cmb.Items[e.Index]);
e.Graphics.FillRectangle(bSolidBrush, rect);
}
}
二,具体使用
/// <summary>
/// 色
/// </summary>
private readonly object[] DrawColorArrary = {
Color.FromArgb(0,0,0), //Black(RGB[0,0,0])
Color.FromArgb(255,0,0), //Red(RGB[255,0,0])
Color.FromArgb(0,0,255), //Blue(RGB[0,0, 255])
Color.FromArgb(0,128,0), //Green(RGB[0,128,0])
Color.FromArgb(255,255,0), //Yellow(RGB[255,255,0])
Color.FromArgb(255,128,0), //Orange(RGB[255,128,0])
Color.FromArgb(128,0,255), //Purple(RGB[128,0,255])
Color.FromArgb(128,64,0), //Brown(RGB[128,64,0])
Color.FromArgb(128,128,128) //Gray(RGB[128,128,128])
};
ComboBoxCellTypeForColor oCmbColor = new ComboBoxCellTypeForColor();
oCmbColor.Items = DrawColorArrary;
poSheetView.Cells[aiRow, (int)OptionColName.COL_DRAWCOLOR].CellType = oCmbColor;
- FpSpread中实现颜色选择ComboBox的方法
- 能选择颜色的ComboBox
- FpSpread的基本用法
- 利用javascript在asp.net中实现颜色的选择
- 一个类似CColorDialog中颜色选择的控件实现
- android 颜色选择的实现
- 选择图标的ComboBox
- 选择图标的ComboBox
- combobox的选择事件
- 重写Combobox实现颜色带(ColorRamp)Symbol预览与选择——总结
- 重写Combobox实现颜色带(ColorRamp)Symbol预览与选择——总结
- VB.net中COMBOBOX控件下拉颜色的变化
- easyUI中combobox的下拉框数据背景颜色设置
- Ext.Net Combobox控件 多项选择的变通实现方式
- easyui中combobox设置默认值的方法
- python实现从一组颜色中找出与给定颜色最接近颜色的方法
- winform中设置combobox的只能选择不能输入
- 求助Qt中combobox的条件选择问题
- ASP.NET AJAX 's UpdatePanel 中使用Page.ClientScript.RegisterStartupScript 失败
- C#的DateTime.Now函数祥解
- 日记:2010-06-10 Thursday
- CStdioFile.WriteString无法向文件写入中文
- OpenGL开发包介绍
- FpSpread中实现颜色选择ComboBox的方法
- 七个受用一生的心理寓言
- .net com组件
- 一个创建树控件的例子
- Ubuntu删除和新建用户
- 如何去掉图片链接的蓝边
- 虚继承
- 理解windows程序设计
- 堆和栈的区别(转过无数次的文章)