您的位置:首页 > 其它

WPF DataGrid实现单击单元格直接编辑

2018-12-15 13:45 78 查看

(纯新手,第一次用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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: