在本地声明和使用控件是否不好?

时间:2018-11-26 13:58:14

标签: c# winforms dynamic

Panel Pan_TitlePanel = new Panel()
{
    Dock = DockStyle.Top,
    Height = SETTINGS.TITLEPANELHEIGHT,
    BackColor = SETTINGS.TITLEPANELCOLOR
};
Pan_TitlePanel.MouseDown += new MouseEventHandler(TitlePanel_MouseDown);
Pan_TitlePanel.MouseUp += new MouseEventHandler(TitlePanel_MouseUp);
Pan_TitlePanel.MouseMove += new MouseEventHandler(TitlePanel_MouseMove);
this.Controls.Add(Pan_TitlePanel);

我在表单初始化程序中使用了此代码。如您所见,变量Pan_TitlePanel的声明位于函数内,从而使其成为局部变量。

这是不好的做法,尤其是在面板具有触发的事件时。我不需要在代码的任何其他地方引用它,因此只是好奇这是不好的还是完全可以的。

1 个答案:

答案 0 :(得分:0)

我看不到有问题,这种方式可以很好地工作。

由于它始终被表单引用,因此即使在“超出范围”之后也不会被GC。

例如,当您要从表单中删除它时,您始终可以通过发送者对象从三个事件处理程序之一访问它。

您可以通过用匿名方法替换事件处理程序来进一步缩短代码。

Pan_TitlePanel.MouseDown += (sender, args) => { /* put your logic here */};