DataGrid使用技巧(一)-------如何屏蔽單元格輸入

發表于:2007-06-30來源:作者:點擊數: 標簽:
有時候聽有些朋友抱怨.NET的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))
           {
&nbsp;           MessageBox.Show("不能輸入數字,請重新輸入");
            ((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text=oldValue;
            return;
            }
             index++;
        }
}
}

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97