本帖最后由 s5689412 于 2019-6-22 13:36 编辑
额,不知道产品组那边什么时候才能有结果,我先说说自己的解决方法吧,有点曲线救国的意思,大概不算是最好的解决办法,放在这儿权当抛砖引玉吧。
现在的问题在于Demo代码在CheckList框收起之后,不知为什么C1EditorGetValue被极快触发,导致_value变量还没有构造出新值,返回的是之前的值
public object C1EditorGetValue()
{
// return value from drop down or from edit area
return (_dropped) ? _value : Text;
}
所以我的解决思路是既然没办法在C1EditorGetValue事件之前的某个事件中赋新值,那就时刻保持取到的值最新,因为C1EditorGetValue毕竟要在while循环后才会触发
// wait until user makes a selection
while (control.Visible)
{
Application.DoEvents();
MsgWaitForMultipleObjects(1, IntPtr.Zero, 0, 5, 255);
}
我处理了CheckedListBox的_list_ItemCheck事件,每当有项目发生变化时,就更新内容字符串。
按照以上思路处理完之后,在实测过程中发现有一定概率会有卡死情况出现,怀疑是在control.Visible的判断上出了问题,导致进入死循环,为了解决这个问题,
我又增加了isAfterEdit变量,确保在单元格编辑完成之后会跳出循环,最终实测效果很不错。
Demo程序因为较大,我上传到百度网盘,可以下载查看
链接:https://pan.baidu.com/s/1MIyx6GNuuGq7BVSdXsuOsQ
提取码:mh9j
复制这段内容后打开百度网盘手机App,操作更方便哦
另外,我上传到自己修改的代码,以下截图为修改的位置,有兴趣的朋友可以自己测试下。
|