一.引子
当我们在做WinForm的数据库开发时,时常会用到datagridview控件来显示数据.在提供数据交互的时候,常常希望可以对用户输入的数据进行校验.对于一些类似金额的字段,要求只允许输入数字,并且要控制精度.这个时候,我们通常会想到2种解决方法.其一,就是先任随用户输入,然后在Invalidating或lostfocus等事件中做验证并提示.其二,就是我这里所演示的方法,就是直接控制用户的输入,这样将省略去很多冗繁的操作,给数据库程序的快速开发带来方便.
二.设计时效果
三.运行时效果
四.源代码
1)DataGridViewTextBoxCell
using
System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
namespace JcsExpLibary.Numeric_Textbox
... {
public class JcsNumTextBoxCell : DataGridViewTextBoxCell
...{
private bool _isreadonly = true; //是否允许回车代替TAB
private bool _isintegral = false;//是否整数输入
private bool _EnPaste = true;//是否允许粘贴
private bool _EnContextMenu = true; //是否允许现实右键菜单
private int _PointNumber = -1;//为-1时允许输入任意位小数
private bool _isnegativenumber = false; //是否允许输入负数
public JcsNumTextBoxCell(): base()
...{
}
/**//// <summary>
/// 是否只读
/// </summary>
[Category("JCS属性"), Description("是否只读。")]
public bool Isreadonly
...{
get ...{ return this._isreadonly; }
set ...{ this._isreadonly = value; }
}
/**//// <summary>
/// 是否是整数
/// </summary>
[Category("JCS属性"), Description("是否整数。")]
public bool isintegral
...{
get ...{ return this._isintegral; }
set ...{ _isintegral = value; }
}
/**//// <summary>
/// 是否允许输入负数
/// </summary>
[Category("JCS属性"), Description("是否允许输入负数。")]
public bool IsNegativeNumber
...{
get ...{ return _isnegativenumber; }
set ...{ _isnegativenumber = value; }
}
/**//// <summary>
/// 精度位数控制(即:允许输入几位小数控制)
/// </summary>
[Category("JCS属性"), Description("精度位数控制,-1时允许输入任意位小数。")]
public int PointNumber
...{
get ...{ return _PointNumber; }
set ...{ this._PointNumber = value; }
}
[Category("JCS属性"), Description("是否允许粘贴。")]
public bool EnablePaste
...{
get ...{ return _EnPaste; }
set
...{
_EnPaste = value;
}
}
/**//// <summary>
///
/// </summary>
[Category("JCS属性"), Description("是否右键菜单。")]
public bool EnableContextMenu
...{
get ...{ return _EnContextMenu; }
set
...{
_EnContextMenu = value;
}
}
//初始化用于编辑单元格的控件
public override void InitializeEditingControl(int rowIndex,
object initialFormattedValue,
DataGridViewCellStyle dataGridViewCellStyle)
...{
JcsNumTextBoxEditingControl numbertextbox;
JcsNumTextBoxColumn jcsnumcol;
DataGridViewColumn dgvc;
base.InitializeEditingControl(rowIndex, initialFormattedValue,
dataGridViewCellStyle);
//获取承载控件
numbertextbox = DataGridView.EditingControl as JcsNumTextBoxEditingControl;
//获取包含此单元格的列
dgvc = this.OwningColumn; // this.DataGridView.Columns[this.ColumnIndex];
if (dgvc is JcsNumTextBoxColumn)
...{
jcsnumcol = dgvc as JcsNumTextBoxColumn;
numbertextbox.Isreadonly = jcsnumcol.Isreadonly;
numbertextbox.isintegral = jcsnumcol.isintegral;
numbertextbox.IsNegativeNumber = jcsnumcol.IsNegativeNumber;
numbertextbox.PointNumber = jcsnumcol.PointNumber;
numbertextbox.EnablePaste = jcsnumcol.EnablePaste;
numbertextbox.EnableContextMenu = jcsnumcol.EnableContextMenu;
numbertextbox.Text = (string)this.Value;
}
}
//获取单元格的寄宿编辑控件的类型
public override Type EditType
...{
get
...{
return typeof(JcsNumTextBoxEditingControl);
}
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
namespace JcsExpLibary.Numeric_Textbox
... {
public class JcsNumTextBoxCell : DataGridViewTextBoxCell
...{
private bool _isreadonly = true; //是否允许回车代替TAB
private bool _isintegral = false;//是否整数输入
private bool _EnPaste = true;//是否允许粘贴
private bool _EnContextMenu = true; //是否允许现实右键菜单
private int _PointNumber = -1;//为-1时允许输入任意位小数
private bool _isnegativenumber = false; //是否允许输入负数
public JcsNumTextBoxCell(): base()
...{
}
/**//// <summary>
/// 是否只读
/// </summary>
[Category("JCS属性"), Description("是否只读。")]
public bool Isreadonly
...{
get ...{ return this._isreadonly; }
set ...{ this._isreadonly = value; }
}
/**//// <summary>
/// 是否是整数
/// </summary>
[Category("JCS属性"), Description("是否整数。")]
public bool isintegral
...{
get ...{ return this._isintegral; }
set ...{ _isintegral = value; }
}
/**//// <summary>
/// 是否允许输入负数
/// </summary>
[Category("JCS属性"), Description("是否允许输入负数。")]
public bool IsNegativeNumber
...{
get ...{ return _isnegativenumber; }
set ...{ _isnegativenumber = value; }
}
/**//// <summary>
/// 精度位数控制(即:允许输入几位小数控制)
/// </summary>
[Category("JCS属性"), Description("精度位数控制,-1时允许输入任意位小数。")]
public int PointNumber
...{
get ...{ return _PointNumber; }
set ...{ this._PointNumber = value; }
}
[Category("JCS属性"), Description("是否允许粘贴。")]
public bool EnablePaste
...{
get ...{ return _EnPaste; }
set
...{
_EnPaste = value;
}
}
/**//// <summary>
///
/// </summary>
[Category("JCS属性"), Description("是否右键菜单。")]
public bool EnableContextMenu
...{
get ...{ return _EnContextMenu; }
set
...{
_EnContextMenu = value;
}
}
//初始化用于编辑单元格的控件
public override void InitializeEditingControl(int rowIndex,
object initialFormattedValue,
DataGridViewCellStyle dataGridViewCellStyle)
...{
JcsNumTextBoxEditingControl numbertextbox;
JcsNumTextBoxColumn jcsnumcol;
DataGridViewColumn dgvc;
base.InitializeEditingControl(rowIndex, initialFormattedValue,
dataGridViewCellStyle);
//获取承载控件
numbertextbox = DataGridView.EditingControl as JcsNumTextBoxEditingControl;
//获取包含此单元格的列
dgvc = this.OwningColumn; // this.DataGridView.Columns[this.ColumnIndex];
if (dgvc is JcsNumTextBoxColumn)
...{
jcsnumcol = dgvc as JcsNumTextBoxColumn;
numbertextbox.Isreadonly = jcsnumcol.Isreadonly;
numbertextbox.isintegral = jcsnumcol.isintegral;
numbertextbox.IsNegativeNumber = jcsnumcol.IsNegativeNumber;
numbertextbox.PointNumber = jcsnumcol.PointNumber;
numbertextbox.EnablePaste = jcsnumcol.EnablePaste;
numbertextbox.EnableContextMenu = jcsnumcol.EnableContextMenu;
numbertextbox.Text = (string)this.Value;
}
}
//获取单元格的寄宿编辑控件的类型
public override Type EditType
...{
get
...{
return typeof(JcsNumTextBoxEditingControl);
}
}
}
}
2)DataGridViewColumn
using
System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
namespace JcsExpLibary.Numeric_Textbox
... {
public class JcsNumTextBoxColumn : DataGridViewColumn
...{
private bool _isreadonly = true; //是否允许回车代替TAB
private bool _isintegral = false;//是否整数输入
private bool _EnPaste = true;//是否允许粘贴
private bool _EnContextMenu = true; //是否允许现实右键菜单
private int _PointNumber = -1;//为-1时允许输入任意位小数
private bool _isnegativenumber = false; //是否允许输入负数
public JcsNumTextBoxColumn()
: base(new JcsNumTextBoxCell())
...{
}
/**//// <summary>
/// 是否只读
/// </summary>
[Category("JCS属性"), Description("是否只读。")]
public bool Isreadonly
...{
get ...{ return this._isreadonly; }
set ...{ this._isreadonly = value; }
}
/**//// <summary>
/// 是否是整数
/// </summary>
[Category("JCS属性"), Description("是否整数。")]
public bool isintegral
...{
get ...{ return this._isintegral; }
set
...{
if (this._isintegral != value)
...{
this._isintegral = value;
JcsNumTextBoxCell jcsnumcel;
DataGridViewCell dgvc;
int rowCount;
//
// first, update the value on the template cell.
//
jcsnumcel = (JcsNumTextBoxCell)this.CellTemplate;
jcsnumcel.isintegral = value;
//
// now set it on all cells in other rows as well.
//
if (this.DataGridView != null && this.DataGridView.Rows != null)
...{
rowCount = this.DataGridView.Rows.Count;
for (int i = 0; i < rowCount; i++)
...{
dgvc = this.DataGridView.Rows.SharedRow(i).Cells[i];
if (dgvc is JcsNumTextBoxCell)
...{
jcsnumcel = (JcsNumTextBoxCell)dgvc;
jcsnumcel.isintegral = value;
}
}
}
}
}
}
/**//// <summary>
/// 是否允许输入负数
/// </summary>
[Category("JCS属性"), Description("是否允许输入负数。")]
public bool IsNegativeNumber
...{
get ...{ return _isnegativenumber; }
set ...{ _isnegativenumber = value; }
}
/**//// <summary>
/// 精度位数控制(即:允许输入几位小数控制)
/// </summary>
[Category("JCS属性"), Description("精度位数控制,-1时允许输入任意位小数。")]
public int PointNumber
...{
get ...{ return _PointNumber; }
set ...{ this._PointNumber = value; }
}
[Category("JCS属性"), Description("是否允许粘贴。")]
public bool EnablePaste
...{
get ...{ return _EnPaste; }
set
...{
_EnPaste = value;
}
}
/**//// <summary>
///
/// </summary>
[Category("JCS属性"), Description("是否右键菜单。")]
public bool EnableContextMenu
...{
get ...{ return _EnContextMenu; }
set
...{
_EnContextMenu = value;
}
}
//获取或设置用于创建新单元格的模板
public override DataGridViewCell CellTemplate
...{
get
...{
return base.CellTemplate;
}
set
...{
//
if (value != null && !value.GetType().IsAssignableFrom(typeof(JcsNumTextBoxCell)))
...{
string s = "Cell type is not based upon the JcsNumTextBoxCell.";
throw new InvalidCastException(s);
}
base.CellTemplate = value;
}
}
}
}
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
namespace JcsExpLibary.Numeric_Textbox
... {
public class JcsNumTextBoxColumn : DataGridViewColumn
...{
private bool _isreadonly = true; //是否允许回车代替TAB
private bool _isintegral = false;//是否整数输入
private bool _EnPaste = true;//是否允许粘贴
private bool _EnContextMenu = true; //是否允许现实右键菜单
private int _PointNumber = -1;//为-1时允许输入任意位小数
private bool _isnegativenumber = false; //是否允许输入负数
public JcsNumTextBoxColumn()
: base(new JcsNumTextBoxCell())
...{
}
/**//// <summary>
/// 是否只读
/// </summary>
[Category("JCS属性"), Description("是否只读。")]
public bool Isreadonly
...{
get ...{ return this._isreadonly; }
set ...{ this._isreadonly = value; }
}
/**//// <summary>
/// 是否是整数
/// </summary>
[Category("JCS属性"), Description("是否整数。")]
public bool isintegral
...{
get ...{ return this._isintegral; }
set
...{
if (this._isintegral != value)
...{
this._isintegral = value;
JcsNumTextBoxCell jcsnumcel;
DataGridViewCell dgvc;
int rowCount;
//
// first, update the value on the template cell.
//
jcsnumcel = (JcsNumTextBoxCell)this.CellTemplate;
jcsnumcel.isintegral = value;
//
// now set it on all cells in other rows as well.
//
if (this.DataGridView != null && this.DataGridView.Rows != null)
...{
rowCount = this.DataGridView.Rows.Count;
for (int i = 0; i < rowCount; i++)
...{
dgvc = this.DataGridView.Rows.SharedRow(i).Cells[i];
if (dgvc is JcsNumTextBoxCell)
...{
jcsnumcel = (JcsNumTextBoxCell)dgvc;
jcsnumcel.isintegral = value;
}
}
}
}
}
}
/**//// <summary>
/// 是否允许输入负数
/// </summary>
[Category("JCS属性"), Description("是否允许输入负数。")]
public bool IsNegativeNumber
...{
get ...{ return _isnegativenumber; }
set ...{ _isnegativenumber = value; }
}
/**//// <summary>
/// 精度位数控制(即:允许输入几位小数控制)
/// </summary>
[Category("JCS属性"), Description("精度位数控制,-1时允许输入任意位小数。")]
public int PointNumber
...{
get ...{ return _PointNumber; }
set ...{ this._PointNumber = value; }
}
[Category("JCS属性"), Description("是否允许粘贴。")]
public bool EnablePaste
...{
get ...{ return _EnPaste; }
set
...{
_EnPaste = value;
}
}
/**//// <summary>
///
/// </summary>
[Category("JCS属性"), Description("是否右键菜单。")]
public bool EnableContextMenu
...{
get ...{ return _EnContextMenu; }
set
...{
_EnContextMenu = value;
}
}
//获取或设置用于创建新单元格的模板
public override DataGridViewCell CellTemplate
...{
get
...{
return base.CellTemplate;
}
set
...{
//
if (value != null && !value.GetType().IsAssignableFrom(typeof(JcsNumTextBoxCell)))
...{
string s = "Cell type is not based upon the JcsNumTextBoxCell.";
throw new InvalidCastException(s);
}
base.CellTemplate = value;
}
}
}
}
3)JcsNumTextBoxEditingControl
using
System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace JcsExpLibary.Numeric_Textbox
... {
public class JcsNumTextBoxEditingControl:JcsInputNum ,IDataGridViewEditingControl
...{
protected int rowIndex;
protected DataGridView dataGridView;
protected bool valueChanged = false;
public JcsNumTextBoxEditingControl()
...{
}
//重写jcsinputnum的ontextchanged
protected override void OnTextChanged(EventArgs e)
...{
base.OnTextChanged(e);
//通知datagridview值已经更改
NotifyDataGridViewOfValueChange();
}
//通知DataGridView值已经更改
protected virtual void NotifyDataGridViewOfValueChange()
...{
this.valueChanged = true;
if (this.dataGridView != null)
...{
//设置当前单元格有未提交的更改
this.dataGridView.NotifyCurrentCellDirty(true);
}
}
IDataGridViewEditingControl Members#region IDataGridViewEditingControl Members
//获取当鼠标指针位于 DataGridView.EditingPanel 上方但不位于编辑控件上方时所使用的光标
public Cursor EditingPanelCursor
...{
get
...{
return Cursors.IBeam;
}
}
//获取或设置所在的DataGridView.
public DataGridView EditingControlDataGridView
...{
get
...{
return this.dataGridView;
}
set
...{
this.dataGridView = value;
}
}
//获取或设置value(按照指定format)
public object EditingControlFormattedValue
...{
set
...{
this.Text = value.ToString();
NotifyDataGridViewOfValueChange();
}
get
...{
return this.Text;
}
}
//检索单元格的格式化值
public object GetEditingControlFormattedValue(DataGridViewDataErrorContexts context)
...{
return this.Text;
}
//确定指定的键是应由编辑控件处理的常规输入键,还是应由 DataGridView 处理的特殊键
public bool EditingControlWantsInputKey(Keys keyData, bool dataGridViewWantsInputKey)
...{
switch (keyData & Keys.KeyCode)
...{
case Keys.Right:
//
if (!(this.SelectionLength == 0
&& this.SelectionStart == this.ToString().Length))
...{
return true;
}
break;
case Keys.Left:
//
if (!(this.SelectionLength == 0
&& this.SelectionStart == 0))
...{
return true;
}
break;
case Keys.Home:
case Keys.End:
if (this.SelectionLength != this.ToString().Length)
...{
return true;
}
break;
case Keys.Prior:
case Keys.Next:
if (this.valueChanged)
...{
return true;
}
break;
case Keys.Delete:
if (this.SelectionLength > 0 || this.SelectionStart < this.ToString().Length)
...{
return true;
}
break;
}
//
return !dataGridViewWantsInputKey;
}
//准备接受修改
public void PrepareEditingControlForEdit(bool selectAll)
...{
if (selectAll)
...{
SelectAll();
}
else
...{
//光标设置于末尾
this.SelectionStart = this.ToString().Length;
}
}
//获取或设置一个值,该值指示每当值更改时,是否需要重新定位单元格的内容
public bool RepositionEditingControlOnValueChange
...{
get
...{
return false;
}
}
//获取或设置该承载单元格的父行的索引
public int EditingControlRowIndex
...{
get
...{
return this.rowIndex;
}
set
...{
this.rowIndex = value;
}
}
//更改控件的用户界面 (UI),使之与指定单元格样式一致
public void ApplyCellStyleToEditingControl(DataGridViewCellStyle dataGridViewCellStyle)
...{
this.Font = dataGridViewCellStyle.Font;
this.ForeColor = dataGridViewCellStyle.ForeColor;
this.BackColor = dataGridViewCellStyle.BackColor;
this.TextAlign = translateAlignment(dataGridViewCellStyle.Alignment);
}
//获取或设置一个值,该值指示编辑控件的值是否与承载单元格的值不同
public bool EditingControlValueChanged
...{
get
...{
return valueChanged;
}
set
...{
this.valueChanged = value;
}
}
#endregion // IDataGridViewEditingControl.
/**//// Routine to translate between DataGridView
/// content alignments and text box horizontal alignments.
private static HorizontalAlignment translateAlignment(DataGridViewContentAlignment align)
...{
switch (align)
...{
case DataGridViewContentAlignment.TopLeft:
case DataGridViewContentAlignment.MiddleLeft:
case DataGridViewContentAlignment.BottomLeft:
return HorizontalAlignment.Left;
case DataGridViewContentAlignment.TopCenter:
case DataGridViewContentAlignment.MiddleCenter:
case DataGridViewContentAlignment.BottomCenter:
return HorizontalAlignment.Center;
case DataGridViewContentAlignment.TopRight:
case DataGridViewContentAlignment.MiddleRight:
case DataGridViewContentAlignment.BottomRight:
return HorizontalAlignment.Right;
}
throw new ArgumentException("Error: Invalid Content Alignment!");
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace JcsExpLibary.Numeric_Textbox
... {
public class JcsNumTextBoxEditingControl:JcsInputNum ,IDataGridViewEditingControl
...{
protected int rowIndex;
protected DataGridView dataGridView;
protected bool valueChanged = false;
public JcsNumTextBoxEditingControl()
...{
}
//重写jcsinputnum的ontextchanged
protected override void OnTextChanged(EventArgs e)
...{
base.OnTextChanged(e);
//通知datagridview值已经更改
NotifyDataGridViewOfValueChange();
}
//通知DataGridView值已经更改
protected virtual void NotifyDataGridViewOfValueChange()
...{
this.valueChanged = true;
if (this.dataGridView != null)
...{
//设置当前单元格有未提交的更改
this.dataGridView.NotifyCurrentCellDirty(true);
}
}
IDataGridViewEditingControl Members#region IDataGridViewEditingControl Members
//获取当鼠标指针位于 DataGridView.EditingPanel 上方但不位于编辑控件上方时所使用的光标
public Cursor EditingPanelCursor
...{
get
...{
return Cursors.IBeam;
}
}
//获取或设置所在的DataGridView.
public DataGridView EditingControlDataGridView
...{
get
...{
return this.dataGridView;
}
set
...{
this.dataGridView = value;
}
}
//获取或设置value(按照指定format)
public object EditingControlFormattedValue
...{
set
...{
this.Text = value.ToString();
NotifyDataGridViewOfValueChange();
}
get
...{
return this.Text;
}
}
//检索单元格的格式化值
public object GetEditingControlFormattedValue(DataGridViewDataErrorContexts context)
...{
return this.Text;
}
//确定指定的键是应由编辑控件处理的常规输入键,还是应由 DataGridView 处理的特殊键
public bool EditingControlWantsInputKey(Keys keyData, bool dataGridViewWantsInputKey)
...{
switch (keyData & Keys.KeyCode)
...{
case Keys.Right:
//
if (!(this.SelectionLength == 0
&& this.SelectionStart == this.ToString().Length))
...{
return true;
}
break;
case Keys.Left:
//
if (!(this.SelectionLength == 0
&& this.SelectionStart == 0))
...{
return true;
}
break;
case Keys.Home:
case Keys.End:
if (this.SelectionLength != this.ToString().Length)
...{
return true;
}
break;
case Keys.Prior:
case Keys.Next:
if (this.valueChanged)
...{
return true;
}
break;
case Keys.Delete:
if (this.SelectionLength > 0 || this.SelectionStart < this.ToString().Length)
...{
return true;
}
break;
}
//
return !dataGridViewWantsInputKey;
}
//准备接受修改
public void PrepareEditingControlForEdit(bool selectAll)
...{
if (selectAll)
...{
SelectAll();
}
else
...{
//光标设置于末尾
this.SelectionStart = this.ToString().Length;
}
}
//获取或设置一个值,该值指示每当值更改时,是否需要重新定位单元格的内容
public bool RepositionEditingControlOnValueChange
...{
get
...{
return false;
}
}
//获取或设置该承载单元格的父行的索引
public int EditingControlRowIndex
...{
get
...{
return this.rowIndex;
}
set
...{
this.rowIndex = value;
}
}
//更改控件的用户界面 (UI),使之与指定单元格样式一致
public void ApplyCellStyleToEditingControl(DataGridViewCellStyle dataGridViewCellStyle)
...{
this.Font = dataGridViewCellStyle.Font;
this.ForeColor = dataGridViewCellStyle.ForeColor;
this.BackColor = dataGridViewCellStyle.BackColor;
this.TextAlign = translateAlignment(dataGridViewCellStyle.Alignment);
}
//获取或设置一个值,该值指示编辑控件的值是否与承载单元格的值不同
public bool EditingControlValueChanged
...{
get
...{
return valueChanged;
}
set
...{
this.valueChanged = value;
}
}
#endregion // IDataGridViewEditingControl.
/**//// Routine to translate between DataGridView
/// content alignments and text box horizontal alignments.
private static HorizontalAlignment translateAlignment(DataGridViewContentAlignment align)
...{
switch (align)
...{
case DataGridViewContentAlignment.TopLeft:
case DataGridViewContentAlignment.MiddleLeft:
case DataGridViewContentAlignment.BottomLeft:
return HorizontalAlignment.Left;
case DataGridViewContentAlignment.TopCenter:
case DataGridViewContentAlignment.MiddleCenter:
case DataGridViewContentAlignment.BottomCenter:
return HorizontalAlignment.Center;
case DataGridViewContentAlignment.TopRight:
case DataGridViewContentAlignment.MiddleRight:
case DataGridViewContentAlignment.BottomRight:
return HorizontalAlignment.Right;
}
throw new ArgumentException("Error: Invalid Content Alignment!");
}
}
}
4)测试代码
using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using JcsExpLibary.Numeric_Textbox;
namespace WindowsApplication1
... {
public partial class Form9 : Form
...{
public Form9()
...{
InitializeComponent();
InitializeDataGridViewColumns();
}
private void InitializeDataGridViewColumns()
...{
DataGridViewTextBoxColumn dgvtbc;
JcsNumTextBoxColumn jcsnumtextcol;
//
// employee name.
//
dgvtbc = new DataGridViewTextBoxColumn();
dgvtbc.HeaderText = "Name";
dgvtbc.Width = 120;
this.dataGridView1.Columns.Add(dgvtbc);
//
// Employee Value
//
jcsnumtextcol = new JcsNumTextBoxColumn();
jcsnumtextcol.HeaderText = "Employee Value";
jcsnumtextcol.isintegral = false;
jcsnumtextcol.IsNegativeNumber = true;
jcsnumtextcol.PointNumber = 2;
jcsnumtextcol.EnableContextMenu = false;
jcsnumtextcol.EnablePaste = false;
jcsnumtextcol.Width = 75;
this.dataGridView1.Columns.Add(jcsnumtextcol);
//
// Address
//
dgvtbc = new DataGridViewTextBoxColumn();
dgvtbc.HeaderText = "Address";
dgvtbc.Width = 150;
this.dataGridView1.Columns.Add(dgvtbc);
//
// City
//
dgvtbc = new DataGridViewTextBoxColumn();
dgvtbc.HeaderText = "City";
dgvtbc.Width = 75;
this.dataGridView1.Columns.Add(dgvtbc);
//
// Department Code
//
dgvtbc = new DataGridViewTextBoxColumn();
dgvtbc.HeaderText = "Department";
dgvtbc.ValueType = typeof(int);
dgvtbc.Width = 75;
this.dataGridView1.Columns.Add(dgvtbc);
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using JcsExpLibary.Numeric_Textbox;
namespace WindowsApplication1
... {
public partial class Form9 : Form
...{
public Form9()
...{
InitializeComponent();
InitializeDataGridViewColumns();
}
private void InitializeDataGridViewColumns()
...{
DataGridViewTextBoxColumn dgvtbc;
JcsNumTextBoxColumn jcsnumtextcol;
//
// employee name.
//
dgvtbc = new DataGridViewTextBoxColumn();
dgvtbc.HeaderText = "Name";
dgvtbc.Width = 120;
this.dataGridView1.Columns.Add(dgvtbc);
//
// Employee Value
//
jcsnumtextcol = new JcsNumTextBoxColumn();
jcsnumtextcol.HeaderText = "Employee Value";
jcsnumtextcol.isintegral = false;
jcsnumtextcol.IsNegativeNumber = true;
jcsnumtextcol.PointNumber = 2;
jcsnumtextcol.EnableContextMenu = false;
jcsnumtextcol.EnablePaste = false;
jcsnumtextcol.Width = 75;
this.dataGridView1.Columns.Add(jcsnumtextcol);
//
// Address
//
dgvtbc = new DataGridViewTextBoxColumn();
dgvtbc.HeaderText = "Address";
dgvtbc.Width = 150;
this.dataGridView1.Columns.Add(dgvtbc);
//
// City
//
dgvtbc = new DataGridViewTextBoxColumn();
dgvtbc.HeaderText = "City";
dgvtbc.Width = 75;
this.dataGridView1.Columns.Add(dgvtbc);
//
// Department Code
//
dgvtbc = new DataGridViewTextBoxColumn();
dgvtbc.HeaderText = "Department";
dgvtbc.ValueType = typeof(int);
dgvtbc.Width = 75;
this.dataGridView1.Columns.Add(dgvtbc);
}
}
}