CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

如何在winform中DataGrid点击某行,使数据实时显示在TEXTBOX中?散分50!

楼主derfson822()2005-03-04 19:10:18 在 .NET技术 / C# 提问

如题 问题点数:0、回复次数:23Top

1 楼01403222(lvyff)回复于 2005-03-04 19:15:40 得分 0

数据绑定到同一个数据集合中就可以了Top

2 楼derfson822()回复于 2005-03-04 19:20:05 得分 0

具体怎么做,请指点啊Top

3 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2005-03-04 19:21:35 得分 0

datagrid的keypress事件中  
   
  textbox1.text=mydatagrid(mydatagrid.currentcell.rownumber,0)  
  textbox2.text=mydatagrid(mydatagrid.currentcell.rownumber,1)  
  ........  
   
  以此类推Top

4 楼daisy8675(莫依 沉迷)回复于 2005-03-04 19:24:53 得分 0

从孟子那抄袭的...8问偶  
  namespace   DataGridDoubleClick  
  {  
  using   System;  
  using   System.Drawing;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Windows.Forms;  
  using   System.Data;  
   
  public   class   Form1   :   System.Windows.Forms.Form  
  {  
  private   System.Windows.Forms.DataGrid   dataGrid1;  
  private   DataSet   myDataSet;  
  DateTime   gridMouseDownTime;  
          private   System.Windows.Forms.Label   label1;  
   
  private   System.ComponentModel.Container   components   =   null;  
   
  public   Form1()  
  {  
  InitializeComponent();  
  gridMouseDownTime   =   DateTime.Now;  
  SetUp();  
  }  
   
  private   void   SetUp()  
  {  
  //   用2个Table和1和Relation创建DataSet  
  MakeDataSet();  
  //   数据绑定  
  dataGrid1.SetDataBinding(myDataSet,   "Customers");  
   
  //添加样式  
  AddCustomDataTableStyle();  
  }  
   
  private   void   MakeDataSet()  
  {  
  //   创建DataSet.  
  myDataSet   =   new   DataSet("myDataSet");  
               
  //   创建2个DataTables.  
  DataTable   tCust   =   new   DataTable("Customers");  
   
  //   创建两个列,并添加到第一个表  
  DataColumn   cCustID   =   new   DataColumn("custID");  
  DataColumn   cCustName   =   new   DataColumn("custName");  
  DataColumn   cCurrent   =   new   DataColumn("custCity");  
  tCust.Columns.Add(cCustID);  
  tCust.Columns.Add(cCustName);  
  tCust.Columns.Add(cCurrent);  
   
  //   把tables添加到DataSet.  
  myDataSet.Tables.Add(tCust);  
   
         
  /*   计算tables.对每个客户,创建DataRow变量   */  
  DataRow   newRow1;  
   
  //   添加记录到   Customers   Table.  
  for(int   i   =   1;   i   <   4;   i++)  
  {  
  newRow1   =   tCust.NewRow();  
  newRow1["custID"]   =   (100*i).ToString();  
  tCust.Rows.Add(newRow1);  
  }  
   
  tCust.Rows[0]["custName"]   =   "【孟宪会之精彩世界】";  
  tCust.Rows[1]["custName"]   =   "net_lover";  
  tCust.Rows[2]["custName"]   =   "http://xml.sz.luohuedu.net/";  
   
   
  tCust.Rows[0]["custCity"]   =   "北京";  
  tCust.Rows[1]["custCity"]   =   "上海";  
  tCust.Rows[2]["custCity"]   =   "河南";  
  }  
   
  private   void   AddCustomDataTableStyle()  
  {  
  DataGridTableStyle   ts1   =   new   DataGridTableStyle();  
  ts1.MappingName   =   "Customers";  
  //   设置属性  
  ts1.AlternatingBackColor   =   Color.LightGray;  
   
  //   添加Textbox列样式,以便我们捕捉鼠标事件  
  DataGridTextBoxColumn   TextCol   =   new   DataGridTextBoxColumn();  
  TextCol.MappingName   =   "custID";  
  TextCol.HeaderText   =   "序号";  
  TextCol.Width   =   100;  
   
  //添加事件处理器  
  TextCol.TextBox.MouseDown   +=   new   MouseEventHandler(TextBoxMouseDownHandler);  
  TextCol.TextBox.DoubleClick   +=   new   EventHandler(TextBoxDoubleClickHandler);  
  ts1.GridColumnStyles.Add(TextCol);  
   
  TextCol   =   new   DataGridTextBoxColumn();  
  TextCol.MappingName   =   "custName";  
  TextCol.HeaderText   =   "姓名";  
  TextCol.Width   =   100;  
  //添加事件处理器  
  TextCol.TextBox.MouseDown   +=   new   MouseEventHandler(TextBoxMouseDownHandler);  
  TextCol.TextBox.DoubleClick   +=   new   EventHandler(TextBoxDoubleClickHandler);  
  ts1.GridColumnStyles.Add(TextCol);  
   
  TextCol   =   new   DataGridTextBoxColumn();  
  TextCol.MappingName   =   "custCity";  
  TextCol.HeaderText   =   "地址";  
  TextCol.Width   =   100;  
  //添加事件处理器  
  TextCol.TextBox.MouseDown   +=   new   MouseEventHandler(TextBoxMouseDownHandler);  
  TextCol.TextBox.DoubleClick   +=   new   EventHandler(TextBoxDoubleClickHandler);  
  ts1.GridColumnStyles.Add(TextCol);  
   
  dataGrid1.TableStyles.Add(ts1);  
   
  }  
   
  protected   override   void   Dispose(   bool   disposing   )  
  {  
  if(   disposing   )  
  {  
  if   (components   !=   null)    
  {  
  components.Dispose();  
  }  
  }  
  base.Dispose(   disposing   );  
  }  
   
  #region   Windows   Form   Designer   generated   code  
  private   void   InitializeComponent()  
  {  
              this.dataGrid1   =   new   System.Windows.Forms.DataGrid();  
              this.label1   =   new   System.Windows.Forms.Label();  
              ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();  
              this.SuspendLayout();  
              //    
              //   dataGrid1  
              //    
              this.dataGrid1.CaptionBackColor   =   System.Drawing.SystemColors.Info;  
              this.dataGrid1.CaptionForeColor   =   System.Drawing.SystemColors.WindowText;  
              this.dataGrid1.CaptionVisible   =   false;  
              this.dataGrid1.DataMember   =   "";  
              this.dataGrid1.HeaderForeColor   =   System.Drawing.SystemColors.ControlText;  
              this.dataGrid1.Location   =   new   System.Drawing.Point(11,   9);  
              this.dataGrid1.Name   =   "dataGrid1";  
              this.dataGrid1.Size   =   new   System.Drawing.Size(368,   144);  
              this.dataGrid1.TabIndex   =   0;  
              this.dataGrid1.MouseDown   +=   new   System.Windows.Forms.MouseEventHandler(this.dataGrid1_MouseDown);  
              //    
              //   label1  
              //    
              this.label1.Location   =   new   System.Drawing.Point(4,   166);  
              this.label1.Name   =   "label1";  
              this.label1.Size   =   new   System.Drawing.Size(383,   23);  
              this.label1.TabIndex   =   1;  
              this.label1.TextAlign   =   System.Drawing.ContentAlignment.MiddleCenter;  
              this.label1.Click   +=   new   System.EventHandler(this.Form1_Click);  
              //    
              //   Form1  
              //    
              this.AutoScaleBaseSize   =   new   System.Drawing.Size(5,   13);  
              this.ClientSize   =   new   System.Drawing.Size(387,   201);  
              this.Controls.AddRange(new   System.Windows.Forms.Control[]   {  
                                                                                                                                      this.label1,  
                                                                                                                                      this.dataGrid1});  
              this.Name   =   "Form1";  
              this.Text   =   "鼠标双击事件的例子";  
              ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();  
              this.ResumeLayout(false);  
   
          }  
  #endregion  
   
  [STAThread]  
  static   void   Main()    
  {  
  Application.Run(new   Form1());  
  }  
   
  private   void   TextBoxDoubleClickHandler(object   sender,   EventArgs   e)  
  {  
  MessageBox.Show("双击事件发生。鼠标双击到的值:"+((TextBox)sender).Text.ToString());  
  }  
   
  private   void   TextBoxMouseDownHandler(object   sender,   MouseEventArgs   e)  
  {  
  if(DateTime.Now   <   gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))  
  {  
      MessageBox.Show("双击事件发生。鼠标双击到的值:"+((TextBox)sender).Text.ToString());  
  }  
  label1.Text   =   "TextBox   鼠标按下了。     ";  
  }  
   
  private   void   dataGrid1_MouseDown(object   sender,   System.Windows.Forms.MouseEventArgs   e)  
  {  
  gridMouseDownTime   =   DateTime.Now;  
  label1.Text   =   "DataGrid1   鼠标按下了。     ";  
  }  
   
          private   void   Form1_Click(object   sender,   System.EventArgs   e)  
          {  
              label1.Text="";  
          }  
          private   void   label1_Click(object   sender,   System.EventArgs   e)  
          {  
              label1.Text="";  
          }  
  }  
  Top

5 楼yufenfeila(雨纷飞啦)回复于 2005-03-04 19:26:50 得分 0

this.myDataGrid.CurrentCellChanged   +=   new  
  System.EventHandler(this.myDataGrid_CurrentCellChanged);  
   
  ///////////////////////  
   
  private   void   myDataGrid_CurrentCellChanged(object   sender,    
  System.EventArgs   e)  
  {  
        textBox1.Text   =   "Col   is   "   +   myDataGrid.CurrentCell.ColumnNumber  
              +   ",   Row   is   "   +   myDataGrid.CurrentCell.RowNumber    
              +   ",   Value   is   "   +   myDataGrid[myDataGrid.CurrentCell];  
  }  
  Top

6 楼web_gus(树欲静而风不止)回复于 2005-03-04 19:30:55 得分 0

upTop

7 楼derfson822()回复于 2005-03-04 19:33:24 得分 0

我的原意是鼠标点击DATAGRID某行,然后这行的数据实时显示在form的其他一些textbox中Top

8 楼derfson822()回复于 2005-03-04 19:36:20 得分 0

怎么做呢,急求啊Top

9 楼xiaohuasz()回复于 2005-03-04 19:45:55 得分 0

把   dsCustomers1和Customers换成你的  
  private   void   dataGrid1_Click(object   sender,   System.EventArgs   e)  
  {  
  textBox1.BindingContex[this.dsCustomers1,"Customers"].Position=dataGrid1.BindingContext[this.dsCustomers1.Customers].Position;  
  }Top

10 楼derfson822()回复于 2005-03-04 20:07:48 得分 0

楼上的兄弟,我要的是在textbox控件中实时显示出数据来,怎么办  
  Top

11 楼liupeng1977(刘鹏)回复于 2005-03-04 21:42:36 得分 0

datagrid的curserchange事件中  
   
  textbox1.text=mydatagrid(mydatagrid.currentcell.rownumber,0)  
  textbox2.text=mydatagrid(mydatagrid.currentcell.rownumber,1)  
  ........  
   
  以此类推  
  Top

12 楼xiaohuasz()回复于 2005-03-04 22:38:18 得分 0

textbox控件绑定dataset就行了  
  textBox1.DataBindings.Add(new   Binding("Text",   ds,   "customers.custName"));  
  Top

13 楼hunuliudan(铁血丹心)回复于 2005-03-04 23:56:56 得分 0

我简单说下我的看法:  
  我觉得你如果要在DataGrid中点击,那么DataGrid中至少有一列能像按钮一样触发事件。在这个事件的程序块中,通过“e”的事件触发,比如说:“e.Item.cells[0]”等类似的用法,我很久没有写代码了,只记得就是这个样子就可以了,e代表你触发的那一行的信息,cell代表第几列。接下来就是一个赋值工作,简单的用TextBox.Text=e.Item.cells[0]就OK了,不知道明白我的意思了么?Top

14 楼woshimqw(狒狒)回复于 2005-03-05 09:48:24 得分 0

我同样遇到这个问题,我是点击一行后,在一个新的FORM里面显示我所选择的那行的具体数据,现在我能通过  
  gridView1_DoubleClick(object   sender,   System.EventArgs   e)  
  {  
  DataView   vue=new   DataView(dataSet11.Tables["BugMan"]);  
  DataRowView   row=vue[1];//这里我只能指定具体的行数  
  lookbug.txtProject.Text=row["Porject"].ToString();//LOOKBUG为另外一个FORM  
  .......  
  }  
  来实现,不过我只能实现确定要的是哪行,怎么样才能得到鼠标指定的那个行呢?Top

15 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2005-03-05 09:55:09 得分 0

datagrid的keypress事件中  
   
  textbox1.text=mydatagrid(mydatagrid.currentcell.rownumber,0)  
  textbox2.text=mydatagrid(mydatagrid.currentcell.rownumber,1)  
  ........  
   
  以此类推  
   
   
  难道不能实现你的需求么?在keypress事件中,朝textbox里添数据不行么?Top

16 楼superliyubo(龙城 学习中)回复于 2005-03-05 10:02:16 得分 0

GZTop

17 楼hwxnhk0326(殺殺人,灌灌水)回复于 2005-03-19 08:47:25 得分 0

JFTop

18 楼zhzuo(秋枫)回复于 2005-03-19 11:08:58 得分 0

单值绑定,  
  http://blog.csdn.net/zhzuo/archive/2005/01/03/238273.aspx  
  多值绑定  
  http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspxTop

19 楼hwxnhk0326(殺殺人,灌灌水)回复于 2005-03-20 08:14:48 得分 0

upTop

20 楼Iceguy(大侠龙卷风)回复于 2005-03-20 08:43:17 得分 0

关注Top

21 楼kv4000(ABCD(A Brave Csharp Developer))回复于 2005-03-20 11:27:54 得分 0

以后学习!Top

22 楼comefeel(刚中带柔)回复于 2005-03-20 11:41:48 得分 0

JFTop

23 楼hwp82(圆点@DotNet)回复于 2005-03-20 11:42:10 得分 0

txtBox1.Text=(string)gridInfo[gridInfo.CurrentCell.RowNumber,0];Top

相关问题

  • DataGrid(Winform)显示数据问题
  • DataGrid数据插入问题?(WinForm)
  • winform 下datagrid数据怎么绑定
  • winform 的datagrid可以直接在textbox 里面修改数据,在一般情况下,修改后的数据应该什么时候更新到数据库中?是在mouse跳离到其它位置时更
  • 分别将TextBox和DataGrid绑到数据库的一个表上,....
  • 用textbox绑定dataset,修改Datagrid中的数据出错
  • [winform]关于datatable与textbox数据绑定的问题
  • 如何动态统计DATAGRID里模版列(textbox)的数据?
  • 更新数据库updata 出错?winform中datagrid和数据库同时更新
  • winform中,如何把datagrid中的数据插入到数据库中?

关键词

  • datagrid
  • mydatagrid
  • mydataset
  • textbox
  • form
  • private

得分解答快速导航

  • 帖主:derfson822

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo