添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
欢快的四季豆  ·  ASP.NET Core MVC ...·  1 月前    · 
寂寞的绿豆  ·  java - ...·  1 年前    · 

对DataGridView某行进行修改之后,保证光标显示仍在选中行上?
现实问题:
当前的开发中遇到Datagridview的操作,在对Datagridview中单选行进行操作之后,要回到
Datagridview显示界面,但是显示选中行总是在第一行,这样的话,当数据库中数据行太多的时候,显示太多,选择行也许就修改后客户就找不到自己修改的那一行了
解决方案:
搜索资料:1.得到选中行的行号
int i = DataGridView1.CurrentCell.RowIndex  //当前行号
int j = DataGridView1.CurrentCell.ColumnIndex //当前列号
2.指定DataGridView的滚动框位置
DataGridView1.FirstDisplayedScrollingRowIndex = 0
DataGridView1.FirstDisplayedScrollingColumnIndex = 0
为了解决这个问题,我们可以将Datagridview的滚动块位置设置为修改行的那个位置。这样在Datagridview显示的第一行就是客户操作行了。
具体做法:在选中要修改行的时候,即可获取选中行的Index,方法
(int i = DataGridView1.CurrentCell.RowIndex)
在修改完成后,指定滚动块的位置(DataGridView1.FirstDisplayedScrollingRowIndex = i))
注:这几天国庆放假中,等上班了再验证下,是否可行。
搜索资料:3.在还没有去实现并继续搜索资料中发现,有人提出一个新问题,那就是:在如上操作后显示
的第一行就是我们开始选中的那一行,但是之后 取 CurrentRows 时候会出现和selected rows不同的行。
提出的解决方案为:DataGridView1.Rows(i).Selected = True 设置能保证选中行;
DataGridView1.CurrentCell = DataGridView1.Rows(i).Cells(0) 并且滚动条也会自动的滚动。
DataGridView1.Rows(0).Selected = False
DataGridView1.Rows(i).Selected = True
DataGridView1.FirstDisplayedScrollingRowIndex = i
还有人提到解决方法,但是没去实践,所以不知道具体会是怎么样,所以先记录下来
(dataGridView1[columnIndex, rowIndex].Selected = true;
dataGridView1.CurrentCell = dataGridView1[columnIndex, rowIndex]; // 强制
今天上班,经过调试,发现这几位仁兄把问题都提到了
int i = DataGridView1.CurrentCell.RowIndex  //得到该行的索引号
dataGridView1[columnIndex, i].Selected = true   //光标移至该行
DataGridView1.FirstDisplayedScrollingRowIndex = i   //将滑块移动到该行
介于,如果在上面操作之后仍要对表格进行操作,比如通过DataGridView1.CurrentCell 查找该行的数据列,那么我们必须做以下操作,因为这个时候真出现了以上那个问题 CurrentRows 时候会出现和selected rows不同的行
dataGridView1.CurrentCell = dataGridView1[columnIndex, i]; // 强制显示该行
咳,该死的C#什么都封装好了,原以为是这样,原来不需要最后移动滑块,开始光标的定位已经将滑块移动到要显示的行了,第一行就是我们要显示的行了。所以,如果只是添加或者删除,就不需要最后一行代码了。
但是选中修改行后,要不让他滑动到第一行的话就用下面的方法吧:
找到初始滑块位置,在最后再赋还给滑块就好了,那么原来数据行显示在哪,更新后还是显示在那。。。
dgv.Rows[0].Selected = false;
dgv.CurrentCell = dgv[k, dgv.RowCount - 1];
dgv.Rows[dgv.RowCount - 1].Selected = true;
//dgv.FirstDisplayedScrollingRowIndex = dgv.RowCount - 1;
break;
case Update:
dgv.Rows[0].Selected = false;
dgv.CurrentCell = dgv[k, RowIndex];
dgv.Rows[RowIndex].Selected = true;
dgv.FirstDisplayedScrollingRowIndex = FirstRowIndex;
break;
case Delete:
if (dgv.RowCount > 0)
if (RowIndex > 0 && (RowIndex - 1) < dgv.RowCount)
dgv.Rows[0].Selected = false;
dgv.CurrentCell = dgv[k, RowIndex - 1];
dgv.Rows[RowIndex - 1].Selected = true;
}//dgv.FirstDisplayedScrollingRowIndex = RowIndex - 1;
else if (RowIndex <= 0)
dgv.Rows[0].Selected = true;
dgv.Rows[0].Selected = false;
dgv.CurrentCell = dgv[k, dgv.RowCount - 1];
dgv.Rows[dgv.RowCount - 1].Selected = true;
break;
default:
break; 问题:       对DataGridView某行进行修改之后,保证光标显示仍在选中行上?现实问题:      当前的开发中遇到Datagridview的操作,在对Datagridview中单选行进行操作之后,要回到Datagridview显示界面,但是显示选中行总是在第一行,这样的话,当数据库中数据行太多的时候,显示太多,选择行也许就修改后客户就找不到自己修改的那一行了
1、如果有超过一屏的数据,想通过关键字查找到相关记录,然后再定位之,做法如下:   遍历所有行,把某单元格的值和关键字对比,找到后清除所有选择行,然后把当前行设为选择,然后把grid的CurrentCell设置为当前行的某个可见单元格即可,效果就会自动跳到定位好的 行上 。   示例代码:   string InputStr=txtFindSp.Text;   foreach(DataGrid
现实生活中,在医院、汽车、银行等窗口单位的时候,工作人员很少用到鼠标,他们操作键盘的速度甚至比程序员敲代码还要快...在给这些单位做软件系统的时候,他们对UI界面的要求并不高,但是要求用户操作舒适度要非常好。 ------------.
将取消方法放在窗体的Load事件中,如果刷新数据后有一次被 选中 ,可以在加载数据源再次调用方法。这样一来,不论是启动窗体 之后 还是重新更新数据,都不会有默认 选中 行了。 代码就是这几个,只要放对地方,其中任意一个都能实现取消 选中 的效果。 dataGridView 1.ClearSelection(); // dataGridView 1.CurrentCell = null; // dataGridView 1.R...
16. DataGridView 选择的部分拷贝至剪贴板 17. DataGridView 粘贴 18. DataGridView 单元格上ToolTip表示设定(鼠标移动到相应单元格上时,弹出说明信息) DataGridView 控件用法合集(四) 19. DataGridView 中的ContextMenuStrip属性 20. DataGridView 指定滚动框位置 21. DataGridView 手动追加列 22. DataGridView 全体分界线样式设置 23. DataGridView 根据单元格属性更改 显示 内容 24. DataGridView 新追加行的行高样式设置る 25. DataGridView 新追加行单元格默认值设置 DataGridView 中输入错误数据的处理(五) 26. DataGridView 单元格数据错误标签表示 27. DataGridView 单元格内输入值正确性判断 28. DataGridView 单元格输入错误值事件的捕获 DataGridView 控件用法合集(六) 29. DataGridView 行排序(点击列表头自动排序的设置) 30. DataGridView 自动行排序(新追加值也会自动排序) 31. DataGridView 自动行排序禁止情况下的排序 32. DataGridView 指定列指定排序 DataGridView 控件用法合集(七) 33. DataGridView 单元格样式设置 34. DataGridView 文字表示位置的设定 35. DataGridView 单元格内文字列换行 36. DataGridView 单元格DBNull值表示的设定 37. DataGridView 单元格样式格式化 38. DataGridView 指定单元格颜色设定 39. DataGridView 单元格文字字体设置 40. DataGridView 根据单元格值设定单元格样式 DataGridView 控件用法合集(八) 41. DataGridView 设置单元格背景颜色 42. DataGridView 行样式描画 43. DataGridView 显示 行号 44. DataGridView 焦点所在单元格焦点框不 显示 的设定 DataGridView 控件用法合集(九) 45. DataGridView 显示 选择框CheckBox 46. DataGridView 显示 下拉框ComboBox 47. DataGridView 单击打开下拉框 48. DataGridView 显示 按钮 49. DataGridView 显示 链接 50. DataGridView 显示 图像 DataGridView 控件用法合集(十) 51. DataGridView 编辑中单元格控件取得 52. DataGridView 输入自动完成 53. DataGridView 单元格编辑时键盘KEY事件取得 54. DataGridView 下拉框(ComboBox)单元格编辑时事件取得 55. DataGridView 下拉框(ComboBox)单元格允许文字输入设定 DataGridView 控件用法合集(十一) 56. DataGridView 根据值不同在另一列中 显示 相应图片 57. DataGridView 显示 进度条(ProgressBar) 58. DataGridView 中添加MaskedTextBox DataGridView 控件用法合集(十二) 59. DataGridView 中Enter键按下焦点移至旁边的单元格 60. DataGridView 行集合化(Group) DataGridView Row selectedRow = dataGridView 1.Rows[selectedRowIndex]; // 克隆 选中 的行,并将其添加到 DataGridView dataGridView 1.Rows.Add(selectedRow.Clone()); // 将新增的行插入到 选中 行的下方 int newRowIdx = selectedRowIndex + 1; dataGridView 1.Rows[newRowIdx].Cells[0].Value = ""; // 可以根据需要设置新行的初始值 这段代码假设您的 DataGridView 控件名为 dataGridView 1。首先,我们获取当前 选中 行的索引,然后使用 Clone 方法克隆 选中 行的数据,并将克隆得到的行添加到 DataGridView 中。最后,将新增的行插入到 选中 行的下方,并可以设置新行的初始值。 请注意,此代码只适用于 选中 单个单元格并且该单元格所在的行为完整行的情况。如果您需要处理多个单元格或部分行的情况,则需要 进行 适当的 修改