跪求vs2010winform DataGridView单元格高级设置小数位数问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跪求vs2010winform DataGridView单元格高级设置小数位数问题?相关的知识,希望对你有一定的参考价值。
用Column.DefaultCellStyle.Format = "#.##"的话,用户永远只能看见处理过的数据,
我希望实现如下功能,比如单元格数据为15.1231,在datagridview绑定数据并显示后,该单元格数据保留两位小数,当用户双击该单元格后,显示完整数据。请各位大虾们帮帮忙!急急急急急急急~
第一方法用于对你原有数据进行一些数据格式列的添加,以及绑定
那么在第一个方法中你可以用这种列添加的方式,也可以用变量来暂时存储临时数据,例如在点击事件中将这个值取出来保存在一个全局变量中,然后在离开事件中再将这个变量的值给这个cell,都可以
第二个和第三个方法是DataGridView的事件,用于你的双击和离开后的显示值转换
不明白话,再HI我吧
private void button1_Click(object sender, EventArgs e)
DataTable dt = new DataTable();
DataColumn dcId = new DataColumn("id");
DataColumn dcValue = new DataColumn("value");
dt.Columns.Add(dcId);
dt.Columns.Add(dcValue);
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = 123.456;
dt.Rows.Add(dr);
DataColumn tempValue = new DataColumn("tempTypeValue");
dt.Columns.Add(tempValue);
DataColumn typeValue = new DataColumn("typeValue");
dt.Columns.Add(typeValue);
foreach (DataRow dritem in dt.Rows)
dritem["tempTypeValue"] = float.Parse(dritem["value"].ToString()).ToString("F2");
dritem["typeValue"] = float.Parse(dritem["value"].ToString()).ToString("F2");
dataGridView1.DataSource = dt;
foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
dgvc.Visible = dgvc.Name == "tempTypeValue" || dgvc.Name == "value" ? false : true;
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
if (e.ColumnIndex == dataGridView1.Columns["typeValue"].Index)
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = dataGridView1.Rows[e.RowIndex].Cells["value"].Value;
private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
if (e.ColumnIndex == dataGridView1.Columns["typeValue"].Index)
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = dataGridView1.Rows[e.RowIndex].Cells["tempTypeValue"].Value;
参考技术A
思路是这样的,就算你给单元格改了Format,但其实单元格的值还是没变,那么你给datagridview绑定一个textbox控件,用它来显示完整的值!
代码如下(部分):
TextBox tb = new TextBox();//定义一个textbox
tb.Visible = false;
dataGridView1.Controls.Add(tb);//将textbox添加到datagridview中
tb.Height = dataGridView1.GetCellDisplayRectangle(dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex, true).Height;//设置tb的高度
tb.Width = dataGridView1.GetCellDisplayRectangle(dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex, true).Width;//设置tb的宽度
//datagridview的单击事件,用于显示tb
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
tb.Location = dataGridView1.GetCellDisplayRectangle(dataGridView1.CurrentCell.ColumnIndex, dataGridView1.CurrentCell.RowIndex, true).Location;//设置坐标
tb.Text = dataGridView1.SelectedCells[0].Value.ToString();//给tb赋值
tb.Visible = true;
失去焦点时隐藏就可以了,主要思路有了,剩下的改改就可以!
有什么问题再补充!
参考技术B 这种需求就不能用“Column.DefaultCellStyle.Format = "#.##"”这种方式了,用程序向单元格中写数,然后在单元格的双击事件中再写代码取完整数据。 参考技术C 给单元格加双击事件,调整数字格式试试跪求 lattice FPGA SDI视频处理的例程!!!!
SD HD的视频例程 都好!!
参考技术A 你是想用FPGA来实现HD SDI数据通信?这个应该没有现成的例子,串行传输倒是很多例子的。
需要就自己按照SDI协议敲一个,应该也不难。
以上是关于跪求vs2010winform DataGridView单元格高级设置小数位数问题?的主要内容,如果未能解决你的问题,请参考以下文章
从 VS2010 升级的 VS2013 winforms 项目中缺少一些图标和文本
在 VS 2010 的 Winforms 项目中添加 WPF 窗口