从使用dllimport-ed函数的表单继承时出错

时间:2014-04-11 10:35:41

标签: c# winforms inheritance dllimport

我创建了一个C dll,过去两个月我一直在C#Windows Forms应用程序中使用它。在我需要从使用P /调用函数的Form继承之前,我没有遇到任何问题。

dll中的函数:

    extern "C" void __declspec(dllexport) __stdcall setBrightness(long a)
    {
    ...
    }

P /在C#中调用函数:

    [DllImport("UserDLL.dll")]
    public extern static void setBrightness(Int32 Brightness);

我如何从使用p /调用函数的Form1继承:

    partial class UserSide: Form1
    {
    ...
    }

代码编译时没有任何错误/警告,程序似乎没有缺陷地执行。但是当我尝试打开UserSide表单的设计时,会出现以下屏幕:

enter image description here

有谁知道为什么会这样?当我直接从Form1中的文件加载图像时,可能会发现类似的错误:

    StatusIcons[0] = System.Drawing.Image.FromFile("ImgIcn/camera_test.png");

enter image description here

为了解决这个问题,我在资源中移动了图像,但我不认为用dll做同样的事情是明智的(如果有可能的话)。 我正在使用VS2010。

提前谢谢!

克里斯..

1 个答案:

答案 0 :(得分:0)

根据屏幕截图中的StackTrace,问题的原因是设计人员运行的代码只应在运行时在尝试显示表单时执行。因此,我建议移动检查DesignMode属性的if块中的关键代码部分,例如:

public Form1()
{
    InitializeComponent();
    if (!DesignMode)
    {
        // execute code that can only run at runtime
    }
}