大家好,小弟遇到一个问题,请求大家帮忙。 我用的语言c#
问题如下:我想在spread winForm的单元格子编辑状态结束时,作一个业务上的判断,如输入内容合法就结束编辑状态,处理结束。 如果输入的内容不合法,就弹出一个消息框,然后重新设置当前单元格为编辑状态。
请问有什么好的方法没有?
我在Spead_EditModeOff事件中,自己用下面的尝试过了,反正都是没有用。。。。
spd.ActiveSheet.SetActiveCell(cell.Row.Index, cell.Column.Index);
spd.Focus();
spd.StartCellEditing(null, false);
最后那个StartCellEditing方法,能成功的触发 Spead_EditModeOn事件,但是不能设置光标,焦点到被编辑的cell
再补充,我再某一个按钮事件中,直接用下面的语句是能成功的进入编辑状态,并且光标也在被编辑的cell里闪烁。因此我判断上面的方法里,光标不在被编辑的cell里闪烁的原因是Spead_EditModeOff是其它事件引发的(例如:cell1编辑中时,鼠标点击cell2),我虽然在这里设置了光标移到当前的cell,但是在Spead_EditModeOff事件之后,其它事件还会继续触发(cell2会继续获得焦点),导致了我设置的编辑模式无效。
因此修改的办法大概从两方面入手,一个是如果能有类似 EditEnding事件,在判断输入内容不合格后用e.cancel 来取消[编辑结束事件],继续编辑。
二是能在所有事件完毕这个时间点才用下面两句代码重新设置编辑模式,但是好像不太好找这样一个时间点。。。
spd.ActiveSheet.SetActiveCell(0,1);
spdKudariKonkaiKensaKekka.StartCellEditing(null, false); |
|