Is it bad to declare and use controls at a local level?





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















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);


I've used this code within a form initialiser. As you can see the declaration of the variable Pan_TitlePanel is within the function, thus making it local.



Is this bad practise, especially when the panel has events that it triggers. I do not need to reference it at any other point in my code, so was just curious if this is bad, or perfectly fine.










share|improve this question




















  • 1





    Not really. You can shorten your event declarations to just Pan_TitlePanel.MouseDown += TitlePanel_MouseDown; etc.

    – LarsTech
    Nov 26 '18 at 14:08






  • 1





    This is quite commonly used. If your handlers are not that complex (just for readability), you can substitute the standard handler delegate with a Lambda (as shown in kennyzx answer). The Control is added to a Container's controls collection: its reference will persist.

    – Jimi
    Nov 26 '18 at 16:27


















0















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);


I've used this code within a form initialiser. As you can see the declaration of the variable Pan_TitlePanel is within the function, thus making it local.



Is this bad practise, especially when the panel has events that it triggers. I do not need to reference it at any other point in my code, so was just curious if this is bad, or perfectly fine.










share|improve this question




















  • 1





    Not really. You can shorten your event declarations to just Pan_TitlePanel.MouseDown += TitlePanel_MouseDown; etc.

    – LarsTech
    Nov 26 '18 at 14:08






  • 1





    This is quite commonly used. If your handlers are not that complex (just for readability), you can substitute the standard handler delegate with a Lambda (as shown in kennyzx answer). The Control is added to a Container's controls collection: its reference will persist.

    – Jimi
    Nov 26 '18 at 16:27














0












0








0








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);


I've used this code within a form initialiser. As you can see the declaration of the variable Pan_TitlePanel is within the function, thus making it local.



Is this bad practise, especially when the panel has events that it triggers. I do not need to reference it at any other point in my code, so was just curious if this is bad, or perfectly fine.










share|improve this question
















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);


I've used this code within a form initialiser. As you can see the declaration of the variable Pan_TitlePanel is within the function, thus making it local.



Is this bad practise, especially when the panel has events that it triggers. I do not need to reference it at any other point in my code, so was just curious if this is bad, or perfectly fine.







c# winforms dynamic






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 26 '18 at 14:11









LarsTech

70.6k12109161




70.6k12109161










asked Nov 26 '18 at 13:58









Joseph GarrettJoseph Garrett

111




111








  • 1





    Not really. You can shorten your event declarations to just Pan_TitlePanel.MouseDown += TitlePanel_MouseDown; etc.

    – LarsTech
    Nov 26 '18 at 14:08






  • 1





    This is quite commonly used. If your handlers are not that complex (just for readability), you can substitute the standard handler delegate with a Lambda (as shown in kennyzx answer). The Control is added to a Container's controls collection: its reference will persist.

    – Jimi
    Nov 26 '18 at 16:27














  • 1





    Not really. You can shorten your event declarations to just Pan_TitlePanel.MouseDown += TitlePanel_MouseDown; etc.

    – LarsTech
    Nov 26 '18 at 14:08






  • 1





    This is quite commonly used. If your handlers are not that complex (just for readability), you can substitute the standard handler delegate with a Lambda (as shown in kennyzx answer). The Control is added to a Container's controls collection: its reference will persist.

    – Jimi
    Nov 26 '18 at 16:27








1




1





Not really. You can shorten your event declarations to just Pan_TitlePanel.MouseDown += TitlePanel_MouseDown; etc.

– LarsTech
Nov 26 '18 at 14:08





Not really. You can shorten your event declarations to just Pan_TitlePanel.MouseDown += TitlePanel_MouseDown; etc.

– LarsTech
Nov 26 '18 at 14:08




1




1





This is quite commonly used. If your handlers are not that complex (just for readability), you can substitute the standard handler delegate with a Lambda (as shown in kennyzx answer). The Control is added to a Container's controls collection: its reference will persist.

– Jimi
Nov 26 '18 at 16:27





This is quite commonly used. If your handlers are not that complex (just for readability), you can substitute the standard handler delegate with a Lambda (as shown in kennyzx answer). The Control is added to a Container's controls collection: its reference will persist.

– Jimi
Nov 26 '18 at 16:27












1 Answer
1






active

oldest

votes


















0














I don’t see there is a problem with this, it works perfectly this way.



It will not be GC’ed even after it is “out of scope” since it is always referenced by the form.



And you can always access it from one of the three event handlers, thru the sender object, for example, when you want to remove it from the form.



You can further shorten your code by replacing the event handlers with anonymous methods.



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





share|improve this answer


























  • You should test that code. :-)

    – LarsTech
    Nov 26 '18 at 14:59











  • @LarsTech oh yes. That is why they say never write code on iPhone.

    – kennyzx
    Nov 26 '18 at 15:16












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53482709%2fis-it-bad-to-declare-and-use-controls-at-a-local-level%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














I don’t see there is a problem with this, it works perfectly this way.



It will not be GC’ed even after it is “out of scope” since it is always referenced by the form.



And you can always access it from one of the three event handlers, thru the sender object, for example, when you want to remove it from the form.



You can further shorten your code by replacing the event handlers with anonymous methods.



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





share|improve this answer


























  • You should test that code. :-)

    – LarsTech
    Nov 26 '18 at 14:59











  • @LarsTech oh yes. That is why they say never write code on iPhone.

    – kennyzx
    Nov 26 '18 at 15:16
















0














I don’t see there is a problem with this, it works perfectly this way.



It will not be GC’ed even after it is “out of scope” since it is always referenced by the form.



And you can always access it from one of the three event handlers, thru the sender object, for example, when you want to remove it from the form.



You can further shorten your code by replacing the event handlers with anonymous methods.



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





share|improve this answer


























  • You should test that code. :-)

    – LarsTech
    Nov 26 '18 at 14:59











  • @LarsTech oh yes. That is why they say never write code on iPhone.

    – kennyzx
    Nov 26 '18 at 15:16














0












0








0







I don’t see there is a problem with this, it works perfectly this way.



It will not be GC’ed even after it is “out of scope” since it is always referenced by the form.



And you can always access it from one of the three event handlers, thru the sender object, for example, when you want to remove it from the form.



You can further shorten your code by replacing the event handlers with anonymous methods.



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





share|improve this answer















I don’t see there is a problem with this, it works perfectly this way.



It will not be GC’ed even after it is “out of scope” since it is always referenced by the form.



And you can always access it from one of the three event handlers, thru the sender object, for example, when you want to remove it from the form.



You can further shorten your code by replacing the event handlers with anonymous methods.



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






share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 26 '18 at 15:15

























answered Nov 26 '18 at 14:42









kennyzxkennyzx

10.3k52365




10.3k52365













  • You should test that code. :-)

    – LarsTech
    Nov 26 '18 at 14:59











  • @LarsTech oh yes. That is why they say never write code on iPhone.

    – kennyzx
    Nov 26 '18 at 15:16



















  • You should test that code. :-)

    – LarsTech
    Nov 26 '18 at 14:59











  • @LarsTech oh yes. That is why they say never write code on iPhone.

    – kennyzx
    Nov 26 '18 at 15:16

















You should test that code. :-)

– LarsTech
Nov 26 '18 at 14:59





You should test that code. :-)

– LarsTech
Nov 26 '18 at 14:59













@LarsTech oh yes. That is why they say never write code on iPhone.

– kennyzx
Nov 26 '18 at 15:16





@LarsTech oh yes. That is why they say never write code on iPhone.

– kennyzx
Nov 26 '18 at 15:16




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53482709%2fis-it-bad-to-declare-and-use-controls-at-a-local-level%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Wiesbaden

Marschland

Dieringhausen