如何在winform中DataGrid点击某行,使数据实时显示在TEXTBOX中?散分50!
如题 问题点数: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中的数据插入到数据库中?




