2016-03-01 53 views
0

我知道这个主题有很多问题。但我似乎无法理解这一切代表的东西。我只是想让它工作并继续前进。每当我看到我认为对自己的代表时,都必须有一种方法来使这一点更容易理解和行事,但我似乎无法找到它。“Click” - 代表一个实例方法不能有'this'

我有一个FlowLayoutPanel,它将被一堆面板填满。每个面板都需要附加一个OnClick(或Click?)方法。

所以我继续写了(我个人的面板类的创作者的内部):

IntDrawForm form = FindForm() as IntDrawForm; 
Click += form.PointPanelClick; 

,我结束了与错误消息Delegate to an instance method cannot have null 'this'尝试创建一个我的面板时。

+0

你在问什么很模糊。你在写什么语言?什么是错误信息? – gmoshkin

+0

@gmoshkin:我认为在这种情况下认为它是C#是合理的,我相信错误信息是按照标题,尽管这肯定会更清楚。 –

+0

表单可能为空。试试:'if(form!= null){Click + = form.PointPanelClick; }'。顺便说一下,我假设你用'C#'编码。 –

回答

2

是的,如果FindForm()返回null或某个不是IntDrawForm的实例,则会发生这种情况。没有什么特别具体到代表在这里 - 你会得到类似的结果,如果你想这是你的第二个行:

form.CallSomeMethod(); 

鉴于第二(在这种情况下,这将是一个NullReferenceException)。当formnull时,你不应该在这里使用as - 使用cast来代替。这样,如果您没有IntDrawForm,则第一行行将失败,您将得到更多信息异常。

IntDrawForm form = (IntDrawForm) FindForm(); 

现在我们不能告诉为什么FindForm()已经回到或者null或非IntDrawForm,但是这是一个不同的问题。

+0

啊是的,当然形式是空的。代表们的东西让我如此愤怒以致于完全忽略了这一点。我正在写这个创作者。所以面板上的任何地方都没有。我只需要发送我的表单句柄作为参数。多谢。该死的我觉得很愚蠢.. – globalenemy

相关问题