找回密码
 立即注册

QQ登录

只需一步,快速开始

高级大宅男
初级会员   /  发表于:2016-4-18 16:38  /   查看:7920  /  回复:10
如题,勾选后并不触发CommittingEdit事件,有没有什么事件是勾选后立刻触发,而不是点别的单元格就触发的?

2.还有个问题一起问了吧,在修改完单元格后,直接点击C1DataGrid外的控件的话,并不能触发CommittingEdit事件,然而这和正常的用户使用习惯不符。。。有没有什么好的解决办法??

10 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-4-18 17:35:11
沙发
本帖最后由 Alice 于 2016-4-18 17:42 编辑

1.DataGridCheckBoxColumn可以通过Style获取到CheckBox.Checked和UnChecked事件。
代码参考如下:<div class="blockcode"><blockquote>
<c1ataGridCheckBoxColumn.CellStyle>
                        <Style>                           
                            <EventSetter Event="CheckBox.Checked" Handler="OnChecked"/>
                        </Style>


                    </c1ataGridCheckBoxColumn.CellStyle>   
</blockquote></div><br />

2.这是设计。
你是希望编辑后点击控件外就直接提交修改么?请描述清楚你的具体需求,我们帮你看看怎么实现。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
高级大宅男
初级会员   /  发表于:2016-4-18 18:01:45
板凳
1.EventSetter我知道,但是能不能一点击就触发CommittingEdit事件呢?貌似Form版的可以。能触发CommittingEdit的话我就可以统一在事件中处理各种类别的列。

2.对,按习惯来说不管点不点到DataGrid外都应该触发CommittingEdit事件,提交格子的更改。我希望点离单元格的时候就触发CommittingEdit事件。。实在不行的话有没有别的事件能达到要求?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-4-19 09:34:54
地板
高级大宅男 发表于 2016-4-18 18:01
1.EventSetter我知道,但是能不能一点击就触发CommittingEdit事件呢?貌似Form版的可以。能触发CommittingE ...

这是事件的设计,CommittingEdit事件是用户结束编辑状态提交时触发,比如在编辑状态按下enter或是tab。

点击CheckBox并没有离开编辑状态并提交,所以不会触发该事件。
点击到控件外其他地方,单元格并没有离开编辑状态,因此也不会触发该事件。

从你的描述来看,如果你需要强制提交,可以调用EndEdit方法结束编辑状态提交。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
高级大宅男
初级会员   /  发表于:2016-4-19 10:04:51
5#
Alice 发表于 2016-4-19 09:34
这是事件的设计,CommittingEdit事件是用户结束编辑状态提交时触发,比如在编辑状态按下enter或是tab。
...

这个设计有点奇怪吧。。用户也不会编辑DataGrid编辑了一半又跑去别的地方编辑然后又回来吧,而且和Form版以及微软自带的DataGrid行为都不一致啊。。提个建议最起码留个属性什么的,能让用户决定提交的行为方式。

现在我要提交的话,有没有什么合适的事件调用EndEdit?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-4-19 14:03:51
6#
高级大宅男 发表于 2016-4-19 10:04
这个设计有点奇怪吧。。用户也不会编辑DataGrid编辑了一半又跑去别的地方编辑然后又回来吧,而且和Form版 ...

是的,点击其他地方是不会离开编辑状态。
控件提供了EndEdit方法结束编辑,你可以根据自己的需求在合适的场景调用。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
高级大宅男
初级会员   /  发表于:2016-4-19 14:27:42
7#
Alice 发表于 2016-4-19 14:03
是的,点击其他地方是不会离开编辑状态。
控件提供了EndEdit方法结束编辑,你可以根据自己的需求在合适 ...

现在不行啊,我刚才尝试在PreviewLostKeyboardFocus事件中处理,但是发现点击单元格进入编辑状态前也会触发DataGrid的PreviewLostKeyboardFocus事件
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-4-19 15:28:39
8#
高级大宅男 发表于 2016-4-19 14:27
现在不行啊,我刚才尝试在PreviewLostKeyboardFocus事件中处理,但是发现点击单元格进入编辑状态前也会触 ...

这个问题已经和产品组进行了确认,目前的设计就是我之前解释的。
这个设计没法修改,可能会对老用户产生影响。

我已经提交产品组帮你看看有没有解决方案。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-4-19 17:10:30
9#
高级大宅男 发表于 2016-4-19 14:27
现在不行啊,我刚才尝试在PreviewLostKeyboardFocus事件中处理,但是发现点击单元格进入编辑状态前也会触 ...

你可以试试如下的解决方案,使用LostKeyboardFocus事件调用EndEdit方法。
思路就是判断当获得焦点的元素不是DataGrid,也不是DataGrid的子元素上的时候,调用EndEdit方法
  1. void grid_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
  2.         {
  3.             var focused = Keyboard.FocusedElement;
  4.             if (focused != null)
  5.             {
  6.                 var parent = C1.WPF.VTreeHelper.GetParentOfType((DependencyObject)focused, typeof(C1DataGrid));
  7.                 if (parent == null)
  8.                 {
  9.                     this.grid.EndEdit();
  10.                 }
  11.             }
  12.         }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
高级大宅男
初级会员   /  发表于:2016-4-28 15:38:25
10#
Alice 发表于 2016-4-19 17:10
你可以试试如下的解决方案,使用LostKeyboardFocus事件调用EndEdit方法。
思路就是判断当获得焦点的元素 ...

结合你给的方法,解决了问题
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部