Как мне использовать Control.Invoke, если мне нужно передать смесь типов ссылок и значений? - PullRequest
0 голосов
/ 07 октября 2011

Как мне сделать что-то вроде следующего?

private delegate void RenameOperation(string name, string uniqueName, int position);

private void AssignColumnNames(string name, string uniqueName, int position)
{
    dataGridView1.Columns[position].HeaderCell.Value = name;
    dataGridView1.Columns[position].HeaderCell.Tag = uniqueName;
}
    void SomeFunction()
    { 
    int colCount = 0;
    // ... some other code
    if (dataGridView1.InvokeRequired)
        {
            RenameOperation rename = new RenameOperation(AssignColumnNames);
            dataGridView1.Invoke(rename, member.Name, member.UniqueName, colCount);
        }
    }

Каждый раз, когда я делаю это, я получаю Объект типа «System.Int32 []», который не может быть преобразован в тип «System.Int32», и я вообще не знаю, как решить мою проблему. Возможно, я мог бы написать это совсем по-другому, но меня интересует, почему я не могу этого сделать.

1 Ответ

0 голосов
/ 08 октября 2011

Здесь удалось решить мою собственную проблему - для тех, кто заинтересован, я передал colCount в вызов между объявлением его и вызовом этого вызова, но написал: dataGridView1.Invoke (new ResizeOperation (AddColumn), new [] {colCount} ); потому что я думал, что информация о типе была избыточной.

...