WPF DataGrid实现单击单元格直接编辑
(纯新手,第一次用VS,很多不懂,欢迎指点)
目前在做一个PC软件,需要一个多行多列数据录入的编辑界面
DataGrid可以绑定数据源,非常好用,但它有个特性却很不友好:单击先选中单元格,再点击才能编辑,无法直接改掉这个设定
折腾了好多天,多亏有位前辈大佬指点意见
原本我的思路是捕获鼠标点击时的坐标,根据横坐标来让相应位置的控件获得焦点,但大佬直接给了个更简单的思路:让单击变成双击
思路是简单,但对于我这纯粹的新手而言,问题还是有的
问题点一:如何触发事件
我是从这篇英语博文学习到的:https://stackoverflow.com/questions/28168645/automatic-editing-of-wpf-datagrid-content-when-datagrid-cell-gets-focus
<DataGrid AutoGenerateColumns="False" SelectionUnit="Cell" > <DataGrid.CellStyle> <Style TargetType="{x:Type DataGridCell}"> <EventSetter Event="GotFocus" Handler="myDataGridMain_GotFocus"></EventSetter> </Style> </DataGrid.CellStyle>
SelectionUnit=“Cell”,作用是让单击时选中行,直接变成选中单元格,这一步挺重要的
然后在DataGird下面添加CellStyle,来设置单元格事件
问题点二:如何单击变双击
找了好几篇其实内容都一样的文章,最终是在这里下载的源代码:https://www.zhaokeli.com/article/8124.html
说实话,整篇代码很长,我没细看,只是拿来就用,但用的时候出现了两个小问题
我并不确定是因为版本更新导致的,还是原代码敲的时候就有错误,但将就着改了,能用,直接附上我改后的代码下载链接:https://download.csdn.net/download/jdjdjdjdjdjd/10852246
没有币下载也没关系,可以下载原代码,自己修改,问题只有两处:
一处是有两个Point应该是System.Windows.Point(反正我改过来后就可用了),但原代码是Drawing.Point(运行后报错-命名空间“System.Drawing”中不存在类型或命名空间名“Point”);
一处是以下这个方法里的point.x,point.y,强转为int(原本是没有强转的,运行后会报错)
public static void MoveTo(System.Windows.Point point) { SendMouseInput((int)point.X, (int)point.Y, 0, NativeMethods.SendMouseInputFlags.Move | NativeMethods.SendMouseInputFlags.Absolute); }
做完以上工作,将代码添加到项目后,事件内一句代码就搞定了
private void myDataGridMain_GotFocus(object sender, RoutedEventArgs e) { Demo.Mouse.DoubleClick(MouseButton.Left); }
- EasyUI - datagrid中单元格里编辑控件的单击事件如何获取当前行的index
- 获取wpf datagrid当前被编辑单元格的内容
- 单击单元格实现可编辑的表格(学号和姓名下)
- 获取wpf datagrid当前被编辑单元格的内容
- 获取wpf datagrid当前被编辑单元格的内容
- 请教方法和例子:VS2003的datagrid控件,如何实现用鼠标拖动的方法选中任意区域的多个单元格,然后进行统一编辑??
- bootstrap table实现单击单元格可编辑功能
- 想要单击datagrid的上的某个单元格,就可以编辑,
- [WPF]DataGrid行前景色根据单元格编辑值变色
- 获取wpf datagrid当前被编辑单元格的内容
- WPF学习笔记——编辑DataGrid单元格并实时更新到数据库
- easyui datagrid 单击编辑单元格
- WPF的DataGrid编辑单元格回车往右拐的方法
- WPF学习笔记——编辑DataGrid单元格并实时更新到数据库
- 在DataGrid 中如何实现返回被单击的单元格的行号和列号(两个同时返回)
- WPF实战之DataGrid 单元格如何默认单击一次点中
- element-ui 表格实现单元格可编辑的示例
- 在asp.net datagrid中实现多行数据编辑和删除
- (C#)DataGrid实现自定义分页,鼠标移至变色,删除确认、可编辑,可删除
- WPF入门(四)-WPF+LINQ实现数据绑定、交互及简单datagrid样式