资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

DataGrid中的单元格事件操作问题(附源码)?

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

我用下面代码,但是用键盘操作时,只在一行中焦点移动中失去焦点事件响应,而在,在上下列单元格中移动时,失去焦点事件不响应,是怎么回事?  
  using   System;  
  using   System.Drawing;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Windows.Forms;  
  using   System.Data;  
   
  namespace   DataGrid  
  {  
  ///   <summary>  
  ///   Form1   的摘要说明。  
  ///   </summary>  
  public   class   Form1   :   System.Windows.Forms.Form  
  {  
  private   System.Windows.Forms.DataGrid   dataGrid1;  
  ///   <summary>  
  ///   必需的设计器变量。  
  ///   </summary>  
  private   System.ComponentModel.Container   components   =   null;  
  DataSet   ds   =   new   DataSet();  
  DataTable   dt   =   new   DataTable();  
  private   int   currentRow;  
  private   int   num;  
  private   int   price;  
  public   Form1()  
  {  
  //  
  //   Windows   窗体设计器支持所必需的  
  //  
  InitializeComponent();  
   
  //  
  //   TODO:   在   InitializeComponent   调用后添加任何构造函数代码  
  //  
  }  
   
  ///   <summary>  
  ///   清理所有正在使用的资源。  
  ///   </summary>  
  protected   override   void   Dispose(   bool   disposing   )  
  {  
  if(   disposing   )  
  {  
  if   (components   !=   null)    
  {  
  components.Dispose();  
  }  
  }  
  base.Dispose(   disposing   );  
  }  
   
  #region   Windows   窗体设计器生成的代码  
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {  
  this.dataGrid1   =   new   System.Windows.Forms.DataGrid();  
  ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();  
  this.SuspendLayout();  
  //    
  //   dataGrid1  
  //    
  this.dataGrid1.AlternatingBackColor   =   System.Drawing.SystemColors.Window;  
  this.dataGrid1.BackgroundColor   =   System.Drawing.SystemColors.AppWorkspace;  
  this.dataGrid1.CaptionFont   =   new   System.Drawing.Font("Tahoma",   8F,    
  System.Drawing.FontStyle.Bold);  
  this.dataGrid1.DataMember   =   "";  
  this.dataGrid1.GridLineColor   =   System.Drawing.SystemColors.Control;  
  this.dataGrid1.HeaderBackColor   =   System.Drawing.SystemColors.Control;  
  this.dataGrid1.HeaderForeColor   =   System.Drawing.SystemColors.ControlText;  
  this.dataGrid1.LinkColor   =   System.Drawing.SystemColors.HotTrack;  
  this.dataGrid1.Location   =   new   System.Drawing.Point(16,   16);  
  this.dataGrid1.Name   =   "dataGrid1";  
  this.dataGrid1.SelectionBackColor   =    
  System.Drawing.SystemColors.ActiveCaption;  
  this.dataGrid1.SelectionForeColor   =    
  System.Drawing.SystemColors.ActiveCaptionText;  
  this.dataGrid1.Size   =   new   System.Drawing.Size(656,   360);  
  this.dataGrid1.TabIndex   =   0;  
  //    
  //   Form1  
  //    
  this.AutoScaleBaseSize   =   new   System.Drawing.Size(6,   14);  
  this.ClientSize   =   new   System.Drawing.Size(688,   389);  
  this.Controls.Add(this.dataGrid1);  
  this.Name   =   "Form1";  
  this.Text   =   "Form1";  
  this.Load   +=   new   System.EventHandler(this.Form1_Load);  
  ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();  
  this.ResumeLayout(false);  
   
  }  
  #endregion  
   
  ///   <summary>  
  ///   应用程序的主入口点。  
  ///   </summary>  
  [STAThread]  
  static   void   Main()    
  {  
  Application.Run(new   Form1());  
  }  
   
  private   void   Form1_Load(object   sender,   System.EventArgs   e)  
  {  
  dt   =   ds.Tables.Add("myTable");  
  DataColumn   myColumn1   =   new   DataColumn();  
  myColumn1.DataType   =   System.Type.GetType("System.Decimal");  
  myColumn1.Caption   =   "单价";  
  myColumn1.ColumnName   =   "单价";  
  myColumn1.DefaultValue   =   "25";  
  dt.Columns.Add(myColumn1);  
  DataRow   myRow1;  
  for(int   i   =   0;   i   <   10;   i++)  
  {    
  myRow1   =   dt.NewRow();    
  myRow1["单价"]   =   i   +   1;    
  dt.Rows.Add(myRow1);    
  }  
   
  DataColumn   myColumn2   =   new   DataColumn();  
  myColumn2.DataType   =   System.Type.GetType("System.Decimal");  
  myColumn2.Caption   =   "数量";  
  myColumn2.ColumnName   =   "数量";  
  myColumn2.DefaultValue   =   "2";  
  dt.Columns.Add(myColumn2);  
  DataRow   myRow2;  
  for(int   i   =   0;   i   <   10;   i++)  
  {    
  myRow2   =   dt.NewRow();    
  myRow2["数量"]   =i+2;  
  dt.Rows.Add(myRow2);    
  }  
   
  DataColumn   myColumn3   =   new   DataColumn();  
  myColumn3.DataType   =   System.Type.GetType("System.Decimal");  
  myColumn3.Caption   =   "总价";  
  myColumn3.ColumnName   =   "总价";  
  myColumn3.DefaultValue   =   1;  
  dt.Columns.Add(myColumn3);  
  DataRow   myRow3;  
  for(int   i   =   0;   i   <   10;   i++)  
  {    
  myRow3   =   dt.NewRow();    
  myRow3["总价"]   =1;    
  dt.Rows.Add(myRow3);    
  }  
   
  DataGridTableStyle   ts   =   new   DataGridTableStyle();  
  DataGridTextBoxColumn   aColumnTextColumn   =   new   DataGridTextBoxColumn();  
  dataGrid1.DataSource   =   dt;  
  ts.MappingName   =   dt.TableName;  
   
  int   numCols;  
  numCols   =   dt.Columns.Count;  
  dataGrid1.CaptionText   =   "test";  
   
  int   j   =   0;  
  while(j<numCols)  
  {  
  aColumnTextColumn   =   new   DataGridTextBoxColumn();  
  aColumnTextColumn.HeaderText   =   dt.Columns[j].ColumnName;  
  aColumnTextColumn.MappingName   =   dt.Columns[j].ColumnName;  
  if   (j==1)  
  {  
  aColumnTextColumn.TextBox.LostFocus   +=new    
  EventHandler(TextBox_LostFocus);  
  aColumnTextColumn.TextBox.TextChanged   +=new    
  EventHandler(TextBox_TextChanged);  
  aColumnTextColumn.TextBox.Enter   +=new   EventHandler(TextBox_Enter);  
  aColumnTextColumn.TextBox.Leave   +=new   EventHandler(TextBox_Leave);  
  aColumnTextColumn.TextBox.KeyUp   +=new   KeyEventHandler(TextBox_KeyUp);  
  }  
  // if   (j==1)  
  // {  
  ts.PreferredColumnWidth   =   100;  
  ts.PreferredRowHeight   =   20;  
  // }  
  ts.AlternatingBackColor   =   Color.LightGray;  
  ts.GridColumnStyles.Add(aColumnTextColumn);  
  j+=1;  
  }  
   
  // DataGridBoolColumn   aColumnBoolColumn   =   new   DataGridBoolColumn();  
  // aColumnBoolColumn.HeaderText   =   dt.Columns[2].ColumnName;  
  // aColumnBoolColumn.MappingName   =   dt.Columns[2].ColumnName;  
  // ts.PreferredColumnWidth   =   100;  
  // ts.PreferredRowHeight   =   25;  
  // ts.AlternatingBackColor   =   Color.LightGray;  
  // ts.GridColumnStyles.Add(aColumnBoolColumn);  
  dataGrid1.TableStyles.Clear();  
  dataGrid1.TableStyles.Add(ts);  
  }  
  private   void   TextBox_TextChanged(object   sender,System.EventArgs   e)  
  {  
   
  }  
  private   void   TextBox_Enter(object   sender,System.EventArgs   e)  
  {  
  }  
  private   void   TextBox_Leave(object   sender,System.EventArgs   e)  
  {  
  // num   =   0;  
  // currentRow   =   dataGrid1.CurrentCell.RowNumber;  
  // num   =    
  Convert.ToInt32(((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text);  
  // price=Convert.ToInt32(dt.Rows[currentRow][0].ToString());  
  // dt.Rows[currentRow][1]   =   num;  
  }  
  private   void   TextBox_LostFocus(object   sender,System.EventArgs   e)  
  {  
  num   =   0;  
  num   =    
  Convert.ToInt32(((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text);  
  currentRow   =   dataGrid1.CurrentCell.RowNumber;  
  dt.Rows[currentRow][2]   =   num   *   Convert.ToInt32(dt.Rows[currentRow][0]);  
  dt.Rows[currentRow][1]   =   num;  
  }  
  private   void   TextBox_KeyUp(object   sender,System.Windows.Forms.KeyEventArgs    
  e)  
  {  
  // num   =   0;  
  // num   =    
  Convert.ToInt32(((DataGridTextBoxColumn)this.dataGrid1.TableStyles[0].GridColumnStyles[1]).TextBox.Text);  
  // currentRow   =   dataGrid1.CurrentCell.RowNumber;  
  // dt.Rows[currentRow][2]   =   num   *   Convert.ToInt32(dt.Rows[currentRow][0]);  
  // dt.Rows[currentRow][1]   =   num;  
  MessageBox.Show("fsd");  
  }  
   
  }  
  }  
   
 

网友回答:

发表者:netcoder

又长,又没注释,怎么看?

发表者:rferen2003

AutoPostBack=true


 

 
热门推荐笔记本: IBM笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved