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

えムナウ の とどけもの

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

目次

利用状況

イメージ ギャラリー

カテゴリ

Links
 

inetaj

MSMVPロゴ
MSMVP Visual C# 2005/01-2007/12
SpreadTextBox.cs テキストボックスコントロールセルクラスです。

using System;
using System.Windows.Forms;
using System.Drawing;
using System.ComponentModel;

namespace SpreadControl
{
        /// <summary>
        /// TextBox の概要の説明です。
        /// </summary>
        public class SpreadTextBox : SpreadControlParts
        {
                #region ローカル変数
                private Type _type = null ;
                private static SpreadTextBox _spreadtextbox = null;
                private static System.Windows.Forms.TextBox _textbox ;
                #endregion

                #region クラスの生成・消滅
                private SpreadTextBox()
                {
                        _textbox = new TextBox() ;
                        _textbox.Location = new System.Drawing.Point(0, 24);
                        _textbox.AutoSize = false ;
                        _textbox.Name = "textBox" ;
                        _textbox.Text = "" ;
                        _textbox.BorderStyle = BorderStyle.None ;
                        _textbox.Visible = false ;
                }

                public static SpreadControlParts GetInstance()
                {
                        if ( _spreadtextbox == null )
                        {
                                _spreadtextbox = new SpreadTextBox() ;
                        }
                        return _spreadtextbox ;
                }
                #endregion

                #region 公開プロパティ
                override public Control Control
                { get { return _textbox ; } }
                #endregion

                #region 公開メソッド
                override public object InitialValue()
                {
                        return "" ;
                }

                override public Size GetPreferredSize( Font font )
                {
                        _textbox.Font = font ;
                        return new Size( 0, _textbox.PreferredHeight ) ;
                }

                override public void EnterControl( Point point, Size size, object control )
                {
                        _textbox.Location = point ;
                        _textbox.Size = size ;
                        _textbox.Text = control.ToString() ;
                        _textbox.Enabled = true ;
                        _textbox.Visible = true ;
                        _type = control.GetType() ;
                }

                override public object LeaveControl()
                {
                        object data ;
                        try 
                        {
                                data = Convert.ChangeType( _textbox.Text, _type ) ;
                        }
                        catch( Exception )
                        {
                                data = "" ;
                        }
                        _textbox.Visible = false ;
                        _textbox.Enabled = false ;
                        return data ;
                }
                #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
        }
}