Разве плохо объявлять и использовать элементы управления на местном уровне? - PullRequest
0 голосов
/ 26 ноября 2018
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 голосов
/ 26 ноября 2018

Я не вижу, что с этим есть проблема, он отлично работает таким образом.

Он не будет обработан GC даже после того, как он «выходит за рамки», так как на него всегда ссылается форма.

И вы всегда можете получить к нему доступ из одного из трех обработчиков событийчерез объект отправителя, например, когда вы хотите удалить его из формы.

Вы можете еще больше сократить свой код, заменив обработчики событий анонимными методами.

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