datagridview

C#中 DataGridView 控件使用小记

瘦欲@ 提交于 2020-03-25 13:38:10
3 月,跳不动了?>>> 一、控件的一些行列设置 DataGridView dgv=showdata;//设计器中DataGridView名称为showdata dgv.AllowUserToAddRows = false;//不显示最后那个"*"行。 dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;//自动设置列宽 dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCells;//自动设置行高 dgv.EditMode = DataGridViewEditMode.EditProgrammatically;//设置为仅程序能编辑,不能手动编辑 二、获取单元格所在的列的名称 string col_name = dgv.Rows[row].Cells[col].OwningColumn.HeaderText; 三、设置单元格的数据格式 dgv.Rows[row].Cells[col].ValueType = typeof(int);//typeof里面放置数据类型如float、int等 四、C#中关于把String类型转化为int型的方法 dgv.Rows[row].Cells[col].Value = int

DataGridView如何获取某个数据

て烟熏妆下的殇ゞ 提交于 2020-03-25 13:32:44
3 月,跳不动了?>>> DataGridView的几个基本操作: 1.获取某个(指定的)单元格的值: dataGridView1.Row[i].Cells[j].Value; 2.获取选中的总行数: dataGridView1.SelectedRows.Count; 3.获取当前选中行的索引: dataGridView1.CurrentRow.Index; 4.获取当前选中单元格的值: dataGridView1.CurrentCell.Value; 5.获取选中行的数据 string [] str = new string [dataGridView.Rows.Count]; for ( int i;i<dataGridView1.Rows.Count;i++ ) { if (dataGridView1.Rows[i].Selected == true ) { str[i] = dataGridView1.Rows[i].Cells[ 1 ].Value.ToString(); } } 6.获取选中行的某个数据 int a = dataGridView1.SelectedRows.Index; dataGridView1.Rows[a].Cells[index].Value; 7.获取某个(指定的)单元格的值: dataGridView1.Rows[i].Cells[j]

datagridview中绑定数据后,数据下方总是多处一行空白行

房东的猫 提交于 2020-03-25 12:41:49
3 月,跳不动了?>>> 1、datagridview绑定dataTable控件上添加列时需指定列对应的字段名 2、datagridview中绑定数据后,数据下方总是多处一行空白行。这是允许用户自行添加新行而设定的。 只需将控件中的AllowUserToAddRows属性设定为False即可解决。 dataGridView1.AllowUserToAddRows = false; 来源: oschina 链接: https://my.oschina.net/8824/blog/3211098

winform datagridview 通过右键菜单来删除数据行

我是研究僧i 提交于 2020-03-21 04:46:53
1.实现当鼠标移到数据行时,右键删除数据。 步骤1.先定义变量CurrentRowIndex来存储鼠标经过的行数。 如下: View Code 1 public partial class FormTest : Form 2 { 3 private bool isLoad { get ; set ; } 4 /// <summary> 5 /// 当前行号 6 /// </summary> 7 private int CurrentRowIndex { get ; set ; } 2.为该变量赋值。使用CellMouseEnter 代码如下: View Code 1 private void dataGridView1_CellMouseEnter( object sender, DataGridViewCellEventArgs e) 2 { 3 var dgv = (DataGridView)sender; 4 CurrentRowIndex = e.RowIndex; 5 CurrentColumnIndex = e.ColumnIndex; 6 7 } 3.右键鼠标,然后点击删除, 代码如下: View Code 1 private void removeToolStripMenuItem_Click( object sender, EventArgs e) 2 { 3 /

datagridView的数据列绑定问题

…衆ロ難τιáo~ 提交于 2020-03-19 12:37:23
Code 单元格格式化数据 private void dataGridView1_CellFormatting( object sender, DataGridViewCellFormattingEventArgs e) { if (e.ColumnIndex == 1 /* status列的Index */ ) { if ( object .Equals(e.Value, 0 )) { e.Value = " 未完成 " ; e.CellStyle.ForeColor = Color.Red; } else { e.Value = " 已完成 " ; e.CellStyle.ForeColor = Color.Green; } } } 行数据格式化数据,一行的单元格数据可以根据另一个单元值而定 private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { int rowsindex=e.RowIndex ; int row_count=dataGridView1 .Rows.Count ; if (rowsindex < row_count - 1) { DataGridViewRow dgr = dataGridView1.Rows[e.RowIndex];

C#如何实现DataGridView到DataGridView的拖拽

狂风中的少年 提交于 2020-03-19 12:36:32
今天工作中遇到一个问题,需要将一个DataGridView中的某一行拖拽到另一个DataGridView中,在网上搜了一遍,大多是从DataGridView拖拽到TextBox等控件,没有拖拽到 DataGridView中的。拖拽到TextBox很容易,但拖拽到DataGridView就有一个问题:如何决定拖拽到DataGridView中的哪一个Cell? 为此研究了两个小时,终于找到了答案。 例如要实现从gridSource到gridTarget的拖拽,需要一个设置和三个事件: 1、设置gridTarget的属性AllowDrop为True 2、实现gridSource的MouseDown事件,在这里进行要拖拽的Cell内容的保存,保存到剪贴板。 3、实现gridTarget的DragDrop和DragEnter事件,DragDrop事件中的一个难点就是决定拖拽到哪一个Cell 代码如下: gridSource的MouseDown事件: Code private void gridSource_MouseDown( object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { DataGridView.HitTestInfo info = this .gridSource.HitTest(e.X,

使用DataGridView数据窗口控件,构建用户快速输入体验

若如初见. 提交于 2020-03-19 12:35:43
在“ 随风飘散 ” 博客里面,介绍了一个不错的DataGridView数据窗口控件《 DataGridView数据窗口控件开发方法及其源码提供下载 》,这种控件在有些场合下,还是非常直观的。因为,在一般要求客户录入数据的地方,一般有两种途径,其一是通过弹出一个新的窗口,在里面列出各种需要输入的要素,然后保存的,如下图所示; 其二就是直接在DataGridView中直接输入。这两种方式各有优劣,本文介绍采用该控件实现第二种模式的数据数据。如下图所示 这种方式,直接通过在DataGridView中下拉列表或者文本框中输入内容,每列的数据可以联动或者做限制,实现用户数据的约束及规范化。 控件只要接受了DataTable的DataSource之后,会根据列的HeadText内容,显示表格的标题及内容,应用还是比较直观方便的。 private void BindGridViewData(DataTable dt, DataTable dtNoRelation) { organTable = dt; noRelationTable = dtNoRelation; DataGridView dataGridView1 = new DataGridView(); this .groupBox1.Controls.Clear(); this .groupBox1.Controls.Add

DataGridView中虚拟模式(Virtual Mode)用法

末鹿安然 提交于 2020-03-19 12:34:55
DataGridView是.net 2.0新增的表格数据编辑和显示控件,简单的数据显示和编辑,只需直接和数据源绑定就可以了。 对于 一些特殊情况,我们需要自己填充DataGridView,这时候只需要按照行列顺序,首先获得行,然后通过行的Cells属性,得到单元格,设置其 Value属性即可。但这种模式有个问题,即对于几十行或者几百行的数据,显示效率不是问题,当数据量逐渐增大时,效率就成了一个非常重要的问题。 那么,如何解决这样的问题呢,写过或者看过类似Grid控件的朋友一定会想到,按需加载数据。也就是当我们在数据表格中移动时,显示到屏幕上的数据只是实际 需要的数据的一部分,那么,只加载这部分数据即可。而对于DataGridView,一切都准备好了,只要我们开启VirtualMode,然后实现几个 事件(用于加载保存数据),其他的事情DataGridView会替我们做好。 在WinForm窗体中添加一个DataGridView控件,设置VirtualMode属性为True。 实现如下事件: 第一个需要实现的事件是:CellValueNeeded,该事件在控件刷新,需要为单元格填充数据时发生,其参数e返回当前单元格的行和列,根据行和列,获取需要的值,赋给e的Value属性。 如果只是显示数据,该事件已足够,从理论上,通过这样的方法,DataGridView显示的数据与数据量无关

WinForm DataGridView控件隔行变色

不问归期 提交于 2020-03-17 05:09:53
WinForm的DataGridView控件设置行的颜色 1 dgv.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.White; 隔行变色 1 /// <summary> 2 /// 隔行变色 3 /// </summary> 4 /// <param name="dgv">传入DataGridView控件名称</param> 5 public static void DgvRowColor(System.Windows.Forms.DataGridView dgv) 6 { 7 8 if (dgv.Rows.Count != 0) 9 { 10 for (int i = 0; i < dgv.Rows.Count; i++) 11 { 12 if ((i + 1) % 2 == 0) 13 { 14 dgv.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.White; 15 } 16 else 17 { 18 dgv.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(224, 254, 254); 19 } 20 } 21 } 22 } 来源: https:/

How to scroll DataGridView in pixel increments

橙三吉。 提交于 2020-03-14 15:43:45
问题 My original approach was to enclose my DataGridView inside a panel, set its height outside the boundary of the panel and then change control panel's scroll bar position. However, I just found out that the number of rows inside my DataGridView would reach 2000, which forces me to size the DataGridView to at least: 65px (row height) x 2,000 = 130,000px. The maximum allowed size for a DataGridView control on my 64bit machine is 65,535. Anyone can think of a way around this issue? 回答1: Hmm, no,