DataGrid使用技巧(一)

王朝c#·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

DataGrid使用技巧(一)

-------如何屏蔽单元格输入

有时候听有些朋友抱怨.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++;

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航