DataGrid使用技巧(一)

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


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值