SpreadColumn.cs スプレッドシート列属性クラスです。
using System;
using System.Windows.Forms;
using System.Drawing;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
namespace SpreadControl
{
/// <summary>
/// SpreadColumn の概要の説明です。
/// </summary>
[Serializable]
[TypeConverter(typeof(SpreadColumnConverter))]
public class SpreadColumn
{
#region ローカル変数
private Font _font ;
private Color _forecolor ;
private Color _backcolor ;
private string _headerText ;
private Font _headerFont ;
private Color _headerForecolor ;
private Color _headerBackcolor ;
SpreadControlParts _spreadcontrol = null ;
SpreadControlPartsEnum _spreadParts ;
#endregion
#region クラスの生成・消滅
public SpreadColumn()
{
_spreadParts = SpreadControlPartsEnum.TextBox ;
_spreadcontrol = (SpreadControlParts)SpreadControlParts.GetInstance(_spreadParts) ;
_font = TextBox.DefaultFont ;
_forecolor = TextBox.DefaultForeColor ;
_backcolor = TextBox.DefaultBackColor ;
_headerText = "" ;
_headerFont = TextBox.DefaultFont ;
_headerForecolor = TextBox.DefaultForeColor ;
_headerBackcolor = TextBox.DefaultBackColor ;
}
public SpreadColumn( SpreadControlPartsEnum parts,
string headerText, Font headerFont, Color headerForecolor, Color headerBackcolor,
Font font, Color forecolor, Color backcolor )
{
_spreadParts = parts ;
_spreadcontrol = (SpreadControlParts)SpreadControlParts.GetInstance(_spreadParts) ;
_font = font ;
_forecolor = forecolor ;
_backcolor = backcolor ;
_headerText = headerText ;
_headerFont = headerFont ;
_headerForecolor = headerForecolor ;
_headerBackcolor = headerBackcolor ;
}
#endregion
#region 公開プロパティ
[Browsable(false)]
public SpreadControlParts SpreadControlParts
{ get { return _spreadcontrol ; } }
[Browsable(false)]
public Control Control
{ get { return _spreadcontrol.Control ; } }
[Description("セルコントロールの種類です。"),Category("表示")]
public SpreadControlPartsEnum SpreadParts
{
get
{
return _spreadParts ;
}
set
{
_spreadParts = value ;
RaisePropertyChange() ;
}
}
[Description("ヘッダーテキストの表示です。"),Category("表示")]
public string HeaderText
{
get
{
return _headerText ;
}
set
{
_headerText = value ;
RaisePropertyChange() ;
}
}
[Description("ヘッダーでテキストを表示するフォントです。"),Category("表示")]
public Font HeaderFont
{
get
{
return _headerFont ;
}
set
{
_headerFont = value ;
RaisePropertyChange() ;
}
}
[Description("ヘッダーでテキストを表示するために使用する前景色です。"),Category("表示")]
public Color HeaderForeColor
{
get
{
return _headerForecolor ;
}
set
{
_headerForecolor = value ;
RaisePropertyChange() ;
}
}
[Description("ヘッダーでテキストを表示するために使用する背景色です。"),Category("表示")]
public Color HeaderBackColor
{
get
{
return _headerBackcolor ;
}
set
{
_headerBackcolor = value ;
RaisePropertyChange() ;
}
}
[Description("セルでテキストを表示するフォントです。"),Category("表示")]
public Font Font
{
get
{
return _font ;
}
set
{
_font = value ;
RaisePropertyChange() ;
}
}
[Description("セルでテキストを表示するために使用する前景色です。"),Category("表示")]
public Color ForeColor
{
get
{
return _forecolor ;
}
set
{
_forecolor = value ;
RaisePropertyChange() ;
}
}
[Description("セルでテキストを表示するために使用する背景色です。"),Category("表示")]
public Color BackColor
{
get
{
return _backcolor ;
}
set
{
_backcolor = value ;
RaisePropertyChange() ;
}
}
#endregion
#region 公開メソッド
public void EnterControl( Point point, Size size, object control )
{
_spreadcontrol.EnterControl( point, size, control ) ;
_spreadcontrol.Control.Font = _font ;
_spreadcontrol.Control.ForeColor = _forecolor ;
_spreadcontrol.Control.BackColor = _backcolor ;
_spreadcontrol.Control.Focus() ;
}
public object LeaveControl()
{
return _spreadcontrol.LeaveControl() ;
}
#endregion
#region 公開イベント
private EventHandler onPropertyChange ;
[Description("プロパティ変更されたときに発生します。"),Category("アクション")]
public event EventHandler PropertyChange
{ add { onPropertyChange += value; } remove { onPropertyChange -= value; } }
protected virtual void OnPropertyChange(EventArgs e)
{
if (onPropertyChange != null) onPropertyChange(this, e);
}
private void RaisePropertyChange()
{
EventArgs e = new EventArgs() ;
OnPropertyChange( e ) ;
}
#endregion
}
#region タイプコンバーター
internal class SpreadColumnConverter : ExpandableObjectConverter
{
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(string)) return true;
if (destinationType == typeof(InstanceDescriptor)) return true;
return base.CanConvertTo(context, destinationType);
}
public override object ConvertTo(ITypeDescriptorContext context,
System.Globalization.CultureInfo culture, object value, Type destType)
{
if (destType == typeof(string) && value is SpreadColumn)
{
SpreadColumn ic = (SpreadColumn)value;
string columnstring = ic.SpreadParts.ToString() ;
if ( ic.HeaderText.Length != 0 )
{
columnstring += "," + ic.HeaderText ;
}
return columnstring ;
}
if (destType == typeof(InstanceDescriptor) && value is SpreadColumn)
{
SpreadColumn ic = (SpreadColumn)value;
System.Reflection.ConstructorInfo ctor = typeof(SpreadColumn).GetConstructor(new Type[] {
typeof(SpreadControlPartsEnum),
typeof(string), typeof(Font), typeof(Color), typeof(Color),
typeof(Font), typeof(Color), typeof(Color) } ) ;
if (ctor != null)
{
return new InstanceDescriptor(ctor,
new object[] {ic.SpreadParts,
ic.HeaderText, ic.HeaderFont, ic.HeaderForeColor, ic.HeaderBackColor,
ic.Font, ic.ForeColor, ic.BackColor}) ;
}
}
return base.ConvertTo(context, culture, value, destType);
}
}
#endregion
}