えムナウのプログラミングのページ

えムナウ の とどけもの

 Logo えムナウBlog@AILight
えムナウBlog@Wankuma

目次

利用状況

イメージ ギャラリー

カテゴリ

Links
 

inetaj

MSMVPロゴ
MSMVP Visual C# 2005/01-2007/12
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
}