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
}
}