Получение ошибки C3352: «Добавить»: указанная функция не соответствует типу делегата «void (System :: Object ^)» - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь реализовать элемент управления представлением таблицы данных и получаю эту ошибку: ошибка 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);
     }

Я не совсем уверен, что вызывает эту ошибку.

Любая помощь будет принята с благодарностью

Хорошо,поэтому я изменил свое объявление делегата на: делегировать int AddDelegateTest (cli :: array ^);Ошибка исчезает, но я получаю исключение во время выполнения:

Произошло необработанное исключение типа 'System.Reflection.TargetParameterCountException' в mscorlib.dll Дополнительная информация: Несоответствие количества параметров.

Кто-нибудьзнаете, почему это происходит?

спасибо

1 Ответ

0 голосов
/ 05 октября 2011
    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);
...