我的桌面现在真的很乱,所以我决定创建一个程序,在那里你可以拖动一个文件,它会创建一个快捷方式。当文件被拖进来时,我抓取文件的图标和名称并保存,然后通过OnPaint()将它们绘制到WinForm。不过,我在这方面遇到了麻烦,因为甚至在我将文件拖到表单中之前,OnPaint()就绘制了一个巨大的红色X,并且没有更新。下面是我的代码(一张图片):
OnPaint方法:
我的问题是,有没有办法延迟OnPaint()方法,直到它获得正确绘制所需的某些数据,或者我可以使用任何其他绘制方法将图标+文件名粘贴到WinForm?
我试过使用Thread.Sleep,但后来我意识到它会让主线程休眠,所以拖放过程不会发生
1条答案
按热度按时间gcxthw6b1#
我有两个选择。
第一个是我在评论中所说的。使表单无效,以使
OnPaint
在拖放后被调用:你的另一个选择..使用一个可以在
OnPaint
中检查的标志:第二种选择有效地延迟你的画,直到你说它的好。但只有你的定制画你把
base.OnPaint
调用从你的条件中去掉,这样它就可以在需要的时候进行绘制。