获取错误C3352:'添加':指定的函数与委托类型'void(System :: Object ^)'不匹配

时间:2011-10-05 17:31:12

标签: visual-studio-2008 visual-c++ datagridview delegates

我正在尝试实现数据网格视图控件,我收到此错误:错误C3352:'添加':指定的函数与委托类型'int(System :: Object ^)'

当我尝试这样做时:

delegate int AddDelegateTest(System::Object^);

if(ColourGridViewControl->InvokeRequired)
    {
         array<String^>^row1 = gcnew array<String^> {"red","blue","yellow","green","white"};

         //This gives an error
         AddDelegateTest^ hTest = gcnew AddDelegateTest(ColourGridViewControl->Rows, &System::Windows::Forms::DataGridViewRowCollection::Add); 

         this->BeginInvoke(hTest,row1);
     }

我不确定是什么导致了这个错误。

非常感谢任何帮助

好的,所以我将委托声明更改为:      delegate int AddDelegateTest(cli :: array ^); 错误消失但我现在得到一个运行时异常:

mscorlib.dll中出现未处理的“System.Reflection.TargetParameterCountException”类型异常附加信息:参数计数不匹配。

有谁知道为什么会这样?

感谢

1 个答案:

答案 0 :(得分:0)

    delegate int AddDelegateTest(array<Object^>^);
    ...
        array<String^>^ row1 = gcnew array<String^> {"red","blue","yellow","green","white"};
        AddDelegateTest^ hTest = gcnew AddDelegateTest(dataGridView1->Rows, 
            &System::Windows::Forms::DataGridViewRowCollection::Add); 
        array<Object^>^ args = gcnew array<Object^> { row1 };
        this->BeginInvoke(hTest, args);