找回密码
 立即注册

QQ登录

只需一步,快速开始

xuxs

高级会员

50

主题

138

帖子

1086

积分

高级会员

积分
1086

活字格认证微信认证勋章

xuxs
高级会员   /  发表于:2015-12-28 10:30  /   查看:3844  /  回复:5
我将Form的KeyPreview设置为True,同时实现了Form的KeyDown事件,在KeyDown事件中判断当按下的按键为F10时将画面关闭
此时如果画面上有FlexGrid,同时某列为ComboBox类型,并且处于下拉状态时以上操作会出异常

具体代码:
首先设置Form的KeyPreview属性为True,然后实现Form的KeyDown事件代码如下:
  1. Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
  2.     If e.KeyCode = Keys.F10 Then
  3.         Me.Close()
  4.     End If
  5. End Sub
复制代码


然后在Form_Load事件中设置FlexGrid的第二列的ComboList值,使其为ComboBox下拉类型
  1. Me.C1FlexGrid1.Cols(1).ComboList = "aaa"
复制代码


最后运行画面之后首先鼠标点击FlexGrid的ComboBox列使其处于下拉状态,然后直接按下F10,如果在Visual Studio异常打开的情况下可以捕获到ObjectDisposedException异常。
显然这是不合理的,请问是不是FlexGrid的Bug?

5 个回复

倒序浏览
gw0506
超级版主   /  发表于:2015-12-28 16:06:00
沙发
在关闭窗口之前,先把FlexGrid清掉。
回复 使用道具 举报
wdtlcv
初级会员   /  发表于:2015-12-28 16:33:00
板凳
我使用Me.Controls.Remove(Me.C1FlexGrid1) 是能够屏蔽这个问题,但是这个问题从外面修改是不是不合理,是不是FlexGrid内部没有考虑全面?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2015-12-28 17:28:00
地板
这一点我也认同你的考虑的可能性。我推测是在dropdown window显示的时候,窗体关闭导致dropdown window的某些逻辑中取parent为空导致异常。不过这需要研发团队确认,而且也有可能受到.net的某些机制限制,因为你是keypreview为ture,而且这个use case比较少见。即便一切顺利,确认是bug,修复后也会在明年3月份发布。
综上,我建议你多做一部Me.Controls.Clear().
回复 使用道具 举报
xuxs
高级会员   /  发表于:2015-12-29 08:45:00
5#
看来只能如此了
回复 使用道具 举报
gw0506
超级版主   /  发表于:2015-12-29 10:13:00
6#
嗯,好的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部