在c#中发送参数错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在c#中发送参数错误相关的知识,希望对你有一定的参考价值。
我在c#中编写了以下代码,经过多次尝试后,我仍然在注释行中遇到同样的错误
错误消息:“方法名称预期”
那么请告诉我为我的LoadSpeceficSontrol函数发送“tmp”变量的适当方法。任何帮助都提前得到赞赏。
private void AddBox()
{
Thread thread= new Thread(() => LoadControls());
thread.Start();
}
delegate void LoadControlsCallback();
private void LoadControls()
{
int Nu = int.Parse(PageNumber.Text);
for (int i = (Nu - 1) * 100; i < Nu * 200 && i < MoviesList.Count; i++)
{
MovieControl tmp = new MovieControl(MoviesList[i]);
if (tmp.InvokeRequired || MoviesFlowPanel.InvokeRequired)
{
LoadControlsCallback d = new LoadControlsCallback(LoadSpeceficControl, new object[] {tmp}); // error here
this.Invoke(d);
}
else
MoviesFlowPanel.Controls.Add(tmp);
}
}
private void LoadSpeceficControl(MovieControl tmp)
{
MoviesFlowPanel.Controls.Add(tmp);
}
代码版本2.0
private void AddBox()
{
Thread thread= new Thread(() => LoadControls());
thread.Start();
}
private void LoadControls()
{
int Nu = int.Parse(PageNumber.Text);
for (int i = (Nu - 1) * 100; i < Nu * 200 && i < MoviesList.Count; i++)
{
MovieControl tmp = new MovieControl(MoviesList[i]);
if (tmp.InvokeRequired || MoviesFlowPanel.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate { MoviesFlowPanel.Controls.Add(tmp); });
}
else
MoviesFlowPanel.Controls.Add(tmp);
tmp = null;
}
}
答案
应该是这样的:
delegate void LoadControlsCallback(MovieControl tmp);
LoadControlsCallback d = LoadSpeceficControl;
d(tmp);
另一答案
您对LoadControlsCallback
的委托定义应与签名匹配。就像你如何使用它,它应该看起来像:
delegate void LoadControlsCallback(Action<MovieControl> action, object[] objarray);
以上是关于在c#中发送参数错误的主要内容,如果未能解决你的问题,请参考以下文章
错误 3002:映射片段中的问题 | c# linq 到实体
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段