有没有办法防止Visual Studio锁定您在设计时设置的图像文件(即背景图像)?



我已经在 VB.NET 工作了大约一年(升级旧的VB6项目,呃(,我的很多工作都涉及在背景图像上放置控件以模拟HMI(人机界面(。其中很大一部分是编辑窗体的背景(以及其他图像控件(。我对 VS 的问题是,当我将图像设置为控件/窗体时,VS 会锁定图像文件。当我需要调整图像时,在测试将其适合表单后,我被迫重新启动VS以释放锁定并覆盖图像文件。

我搜索了Google,并在VS2005中发现了这样的问题,所以它已经有一段时间了。我无法在 VS 中找到要更改的设置,互联网也没有太多帮助,所以我将在此处发布我的解决方案。

我希望这对某人有所帮助。

解决方案非常简单(就我而言(,我从这个博客中得到了这个想法:

即使在设计时,VS 也会在加载控件/窗体(即OnLoad, Paint等(时执行一些窗体/控件代码,因此我创建了对 Image 属性的简单重写来更改图像的加载方式。显然,我有一个派生自Windows.Forms的类:

Public Class SGBase 
Inherits System.Windows.Forms.Form 
' Irrelevent code...
' ...
Public Overrides Property BackgroundImage As Image
Get
Return MyBase.BackgroundImage
End Get
Set(value As Image)
If MyBase.BackgroundImage IsNot Nothing Then MyBase.BackgroundImage.Dispose()
MyBase.BackgroundImage = New Bitmap(value)
End Using
End Set
End Property
End Class

根本问题是,将图像加载到窗体/控件中时,VS IDE 会锁定文件并将其设置为BackgroundImage引用。我的解决方案利用Using语句来防止文件锁定,并确保正确释放并创建新实例。VS 在每次刷新/更改窗体时在设计时运行此代码。

瞧!

另一种简单的方法是在"选择资源"对话框中选择"项目资源文件",而不是选择本地资源。 这样,VS在"资源"文件夹中创建文件的副本,您可以使用其他软件从该文件夹中打开它。例如Photoshop。 使用此方法的另一个优点是,您可以将所有必需的资源与项目源一起交付,以供以后编辑。

最新更新