当前上下文中不存在“Marshal”这个名称

时间:2010-07-03 12:40:53

标签: c#-3.0 directshow.net marshalling

我从bitmapmixer示例(DirectShow.NET)获得了下面的代码,我试图重新实现它。原始样本工作正常。在我的版本中,当我尝试编译时,我得到了错误。

private void AddHandlers()
    {
        // Add handlers for VMR purpose
        this.Paint += new PaintEventHandler(Form1_Paint); // for WM_PAINT
        this.Resize += new EventHandler(Form1_ResizeMove); // for WM_SIZE
        this.Move += new EventHandler(Form1_ResizeMove); // for WM_MOVE
        SystemEvents.DisplaySettingsChanged += new EventHandler(SystemEvents_DisplaySettingsChanged); // for WM_DISPLAYCHANGE
        handlersAdded = true;
    }

    private void RemoveHandlers()
    {
        // remove handlers when they are no more needed
        handlersAdded = false;
        this.Paint -= new PaintEventHandler(Form1_Paint);
        this.Resize -= new EventHandler(Form1_ResizeMove);
        this.Move -= new EventHandler(Form1_ResizeMove);
        SystemEvents.DisplaySettingsChanged -= new EventHandler(SystemEvents_DisplaySettingsChanged);
    }


错误


错误1当前上下文Form1.cs中不存在名称“Marshal” 错误2当前上下文Form1.cs中不存在名称“Marshal” 错误3当前上下文Form1.cs中不存在名称“Form1_ResizeMove” 错误4当前上下文Form1.cs中不存在名称“Form1_Paint” 错误5当前上下文Form1.cs中不存在名称“Form1_ResizeMove” 错误6当前上下文Form1.cs中不存在名称“Form1_ResizeMove” 错误7当前上下文Form1.cs中不存在名称'SystemEvents_DisplaySettingsChanged' 错误10当前上下文Form1.cs中不存在名称“Form1_ResizeMove” 错误11当前上下文Form1.cs中不存在名称'SystemEvents_DisplaySettingsChanged'


感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:10)

Marshal类位于System.Runtime.InteropServices命名空间中。你有一个合适的using指令吗?

using System.Runtime.InteropServices;

至于其他错误 - 你班上有这些方法吗?如果没有,删除试图为它们订阅事件处理程序的行...

答案 1 :(得分:0)

公共静态类Marshal是System.Runtime.InteropServices的成员

您只需添加:

使用System.Runtime.InteropServices; 在该.cs文件中