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;
}
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
add a comment |
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
1
Not really. You can shorten your event declarations to justPan_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
add a comment |
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
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
c# winforms dynamic
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 justPan_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
add a comment |
1
Not really. You can shorten your event declarations to justPan_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
add a comment |
1 Answer
1
active
oldest
votes
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 */};
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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 */};
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
add a comment |
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 */};
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
add a comment |
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 */};
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 */};
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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