DataGrid使用技巧(一)-------如何屏蔽单元格输入
2006-09-25 14:22
507 查看
有时候听有些朋友抱怨.NET的DataGrid不是很好用。就我个人的体会,DataGrid的功能非常强大,可以使我们随心所欲的完成各种各样的工作,可惜就是实现起来不够简单明了。我对平时经常碰到的一些问题积累了一些解决的方法,现在把它们总结一下供大家参考。 比较经常碰到的一个问题是:我们希望DataGrid的某一列只能输入特定的文本,比如:不能输入数字。下面的例子说明如何实现这种功能。
新建一个Window应用程序,加入一个DataGrid和SqlConnection,连接SQL数据库NorthWind。
namespace WindowsApplication1
{
public class Form1 : System.Windows.Forms.Form
{
private myDataGrid dataGrid1;
private System.Data.SqlClient.SqlConnection sqlConnection1;
//加入全局变量oldValue,用它表示单元格原来的文本。
private string oldValue;
private void Form1_Load(object sender, System.EventArgs e)
{
oldValue="";
SqlDataAdapter sda=new SqlDataAdapter("select LastName,FirstName from employees",this.sqlConnection1);
DataSet ds=new DataSet();
sda.Fill(ds,"employees");
DataGridTableStyle ats=new DataGridTableStyle();
ats.MappingName="employees";
DataGridColorColumn dcs1=new DataGridColorColumn();
dcs1.HeaderText="lastname";
ats.GridColumnStyles.Add(dcs1);
DataGridTextBoxColumn dcs2=new DataGridTextBoxColumn();
dcs2.HeaderText="firstname";
dcs2.MappingName="FirstName";
dcs2.TextBox.TextChanged+=new EventHandler(DataGridTextChanged);
dcs2.TextBox.Enter+=new EventHandler(DataGridTextBox_Enter);
ats.GridColumnStyles.Add(dcs2);
this.dataGrid1.TableStyles.Add(ats);
this.dataGrid1.DataSource=ds;
this.dataGrid1.DataMember="employees";
}
private void DataGridTextBox_Enter(object sender,EventArgs e)
{
//当某一单元格获得焦点时,记录单元格的文本
oldValue=((DataGridTextBoxColumn) this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text;
}
private void DataGridTextChanged(object sender,EventArgs e)
{
int index=0;
string str=((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text;
//当单元格的文本改变时,检验是否有非法字符
while(index<str.Length)
{
//如果发现数字,显示错误信息并将单元格还原为原内容
if (Char.IsDigit(str,index))
{
MessageBox.Show("不能输入数字,请重新输入");
((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text=oldValue;
return;
}
index++;
}
}
}
新建一个Window应用程序,加入一个DataGrid和SqlConnection,连接SQL数据库NorthWind。
namespace WindowsApplication1
{
public class Form1 : System.Windows.Forms.Form
{
private myDataGrid dataGrid1;
private System.Data.SqlClient.SqlConnection sqlConnection1;
//加入全局变量oldValue,用它表示单元格原来的文本。
private string oldValue;
private void Form1_Load(object sender, System.EventArgs e)
{
oldValue="";
SqlDataAdapter sda=new SqlDataAdapter("select LastName,FirstName from employees",this.sqlConnection1);
DataSet ds=new DataSet();
sda.Fill(ds,"employees");
DataGridTableStyle ats=new DataGridTableStyle();
ats.MappingName="employees";
DataGridColorColumn dcs1=new DataGridColorColumn();
dcs1.HeaderText="lastname";
ats.GridColumnStyles.Add(dcs1);
DataGridTextBoxColumn dcs2=new DataGridTextBoxColumn();
dcs2.HeaderText="firstname";
dcs2.MappingName="FirstName";
dcs2.TextBox.TextChanged+=new EventHandler(DataGridTextChanged);
dcs2.TextBox.Enter+=new EventHandler(DataGridTextBox_Enter);
ats.GridColumnStyles.Add(dcs2);
this.dataGrid1.TableStyles.Add(ats);
this.dataGrid1.DataSource=ds;
this.dataGrid1.DataMember="employees";
}
private void DataGridTextBox_Enter(object sender,EventArgs e)
{
//当某一单元格获得焦点时,记录单元格的文本
oldValue=((DataGridTextBoxColumn) this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text;
}
private void DataGridTextChanged(object sender,EventArgs e)
{
int index=0;
string str=((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text;
//当单元格的文本改变时,检验是否有非法字符
while(index<str.Length)
{
//如果发现数字,显示错误信息并将单元格还原为原内容
if (Char.IsDigit(str,index))
{
MessageBox.Show("不能输入数字,请重新输入");
((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text=oldValue;
return;
}
index++;
}
}
}
相关文章推荐
- WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
- 如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
- DataGridView使用技巧十一:DataGridView用户输入时,单元格输入值的设定
- 如何使用搜索技巧来成为一名高效的程序员
- 从C#输入到excel要如何控制每个单元格的边框线是否可见
- Linux Mint12体验-如何使用sudo不输入密码
- 查看网页的时候,提示使用XSL样式表无法查看XML输入,如何解决?
- 如何在DataGrid里面使用动态图形表示数字
- 《转》LaTeX技巧207:使用align环境输入多行公式的技巧
- 如何使用搜索技巧来成为一名高效的程序员(Google, Bing, Yahoo or Baidu)
- 【分享】如何使用sublime代码片段快速输入PHP头部版本声明
- Eclipse的使用技巧之如何出现全部提示字符
- [转] vim使用技巧--如何把所编辑文件的编码方式改为utf-8
- 作为程序员如何对Eclipse使用技巧?
- 输入一串字符串形如(2*(1+3)+8)/4 如何使用程序计算出结果 字符串输入计算器
- EasyUI - datagrid中单元格里编辑控件的单击事件如何获取当前行的index
- 如何控制在DataGrid中不能输入全角数字,符号,字母?
- Android EditText 的使用及值得注意的点——如如何屏蔽EditText的复制、粘贴功能
- MFC的使用技巧(如何彻底删除一个类)
- C/C++如何使用密码输入而不回显--getch()函数