.net 2005下面关于DataGridView的使用

程英杭 2006-05-21 04:17:12
在.net 2005下面出了个DataGridView的控件,我想请问大家这个控件如何实现下面几个功能:
1。如何在我们单元格编辑结束后安回车时候,横向移动单元格。现在默认的时候是纵向移动单元格的。我现在能够实现的是在显示的时候,通过设置DataGridView.CurrentCell来实现横向移动,但如果处于编辑状态他就默认下移,这个怎么办?
2。假设我DataGridView邦定了一个DataSet,那么我希望单元格在某一行最后一列的时候,自动增加一行,我现在程序实现采用如下代码:DataRow drNew = DataSet.Table.NewRow() ; DataSet.Table.Rows.Add(drNew).这样确实可以增加行,但是却增加了两行。如果不在DataGridViewCell中实现该代码,比方通过按钮的Click事件,那么增加的是一行。这个该怎么解决。
3。如果能够触发某一个单元格的KeyPress事件,我希望我在单元格输入的时候自动触发KeyPress事件,这个该怎么处理。
今天下午学习了下DataGridView结果发现了很多问题,这三个问题是比较棘手的问题,希望大虾们能给我解答,小弟这里谢谢了。
...全文
289 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiyun0112 2006-05-22
  • 打赏
  • 举报
回复
override Form 的ProcessCmdKey方法

在里面判断activecontrol或者它的parent是不是datagridview
MonkWang 2006-05-22
  • 打赏
  • 举报
回复
学习 收藏
marvelstack 2006-05-22
  • 打赏
  • 举报
回复
http://www.microsoft.com/china/msdn/library/langtool/vsdotnet/vs05a9.mspx
程英杭 2006-05-22
  • 打赏
  • 举报
回复
谢谢了 我下次测试下 要是还有问题再来麻烦大家
我现在在外面出差 没时间测试呢
lowtemper 2006-05-22
  • 打赏
  • 举报
回复
你自行调用currentcell的endedit()方法试下,应该可以达到效果
wawowawoo 2006-05-21
  • 打赏
  • 举报
回复
帮顶
程英杭 2006-05-21
  • 打赏
  • 举报
回复
前面两个问题都解决了 谢谢
但是第三个问题好像还是不可以
我需要我们在DataGridCell里面写一个字就把这个字显示出来
我原先在DataGrid里面的时候由于我们新输入的字 在没有回车以前都处于缓存里面 所以我那时候采用把这个单元格移开再移回去,把缓存里面的内容邦定到DataGridCell里面。但这里不知道怎么实现好点,望指教
程英杭 2006-05-21
  • 打赏
  • 举报
回复
谢谢 我测试下
san12655874 2006-05-21
  • 打赏
  • 举报
回复
帮你UP
但是,按回车的时候是横向的,为什么不用TAB
lowtemper 2006-05-21
  • 打赏
  • 举报
回复
第三个问题,写在CellBeginEdit事件中
lowtemper 2006-05-21
  • 打赏
  • 举报
回复
第二个问题,写在RowLeave事件中
lowtemper 2006-05-21
  • 打赏
  • 举报
回复
第一个问题:
private bool bEnterEdit = false;
private void InfoDataGridView_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (this.EnterEnable)
{
bEnterEdit = true;
}
}
private bool fEnterEnable;
[Description("enable key of enter to move to the next cell")]
public bool EnterEnable
{
get
{
return fEnterEnable;
}
set
{
fEnterEnable = value;
}
}
protected override bool ProcessDialogKey(Keys keyData)
{
if (this.EnterEnable)
{
Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{
if (this.bEnterEdit && !this.CurrentCell.IsInEditMode && !this.CurrentCell.ReadOnly)
{
bEnterEdit = false;
return this.BeginEdit(true);
}
return this.ProcessRightKey(keyData);
}
}
return base.ProcessDialogKey(keyData);
}

public new bool ProcessRightKey(Keys keyData)
{
try
{
Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{
if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex == (base.RowCount - 2)))
{
base.CurrentCell = base.Rows[base.RowCount - 1].Cells[0];
return true;
}
if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex + 1 != base.NewRowIndex))
{
base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0];
return true;
}
}
return base.ProcessRightKey(keyData);
}
catch
{
return true;
}
}

protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{
if (this.EnterEnable)
{
if (e.KeyCode == Keys.Enter)
{
if (this.bEnterEdit && !this.CurrentCell.IsInEditMode && !this.CurrentCell.ReadOnly)
{
bEnterEdit = false;
return this.BeginEdit(true);
}
return this.ProcessRightKey(e.KeyData);
}
}
return base.ProcessDataGridViewKey(e);
}
fuyiyong 2006-05-21
  • 打赏
  • 举报
回复
帮你顶一下吧!!
vb.net操作DataGridView控件的用法的集合,包括: 1. DataGridView当前的单元格属性取得、变更 2. DataGridView编辑属性 3. DataGridView下面一列新追加行非表示 4. DataGridView判断当前选中行是否为新追加的行 5. DataGridView删除行可否设定 6. DataGridView行列不表示和删除 DataGridView控件用法合集(二) 7. DataGridView行列宽度高度设置为不能编辑 8. DataGridView行高列幅自动调整 9. DataGridView指定行列冻结 10. DataGridView列顺序变更可否设定 11. DataGridView行复数选择 12. DataGridView选择的行、列、单元格取得 DataGridView控件用法合集(三) 13. DataGridView指定单元格是否表示 14. DataGridView表头部单元格取得 15. DataGridView表头部单元格文字列设定 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)

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧