|
Alex, you've got to stop blindly using code you don't understand, and spend some time learning how it works, and what exactly it does.
You are wasting your time just throwing things at random into your app and hoping for the best - that isn't a viable development strategy!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Read the error message - it gives you a lot of information.
Exception Info: System.AccessViolationException That's not too specific, so you need further information.
So look firsther, and you get a stack trace: it starts with the code that generated the exception, and then goes back up through the call list.
And it's something to do with painting in a label:
at System.Windows.Forms.Label.OnPaint(System.Windows.Forms.PaintEventArgs)
So the most likely culprit is your "special Font", which we can't see.
Start by replacing your font with a "normal" one and see if the problem goes away. If it does, then something you are drawing either doesn't exist in the font, or is badly "described" leading to a major crash.
So add logging to the app to find out what exactly is being shown when it fails, and try that exact text on your dev computer to see if you can track down exactly what is causing the problem.
Sorry, but we can't do any of that for you!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Thanks, I tested it. I need to use a better font. The font I used cannot be used through IDE properties. So, I tried to put my font in reference and use code for displaying it.
For solving my problem, I copied my special font to windows font and the problem solved.
|
|
|
|
|
Hi,
I have used several TextBoxes and ComboBoxes in my own project. I want to reset TextBoxes at once by pressing a button. I wrote a simple method as follows:
foreach (var c in Controls)
{
if (c is TextBox)
{
((TextBox)c).Clear();
}
}
When I run the code, nothing happens.
All TextBoxes have their own existing texts.
Please guide me.
modified 26-Feb-21 12:14pm.
|
|
|
|
|
The docs say nothing about "Clear" doing anything "visible".
I'd use:
if ( c is TextBox tb ){
tb.Text = "";
}
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
Clear works in both WinForms and WPF.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Never used it. Can't think of a reason either ... particularly since I want the TB to reflect what's in the binding target, and vise versa. I have no idea what Clear does in this case.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
That will work - on textboxes, it won't touch ComboBoxes - provided they aren't inside any containers: Panel, Splitters, GroupBoxes, and so on. If they are, then you need to recurse though the container.Controls collection as well in order to find them.
It will also only find TextBoxes which are in the current instance of a Form - ones in a different Form or a different instance will not be found and cleared.
But in more recent versions of C#, it's clearer to do this than cast:
private void MyButton_Click(object sender, EventArgs e)
{
foreach (Control c in Controls)
{
if (c is TextBox tb)
{
tb.Clear();
}
}
}
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
It doesn't still make any effect. Finally, I found the issue. I have put those Textboxes in a GroupBox. When the TextBoxes are out of the GroupBox, the code works, but inside the GroupBox it fails.
How can I solve it?
modified 26-Feb-21 1:27am.
|
|
|
|
|
You need a recursive method that can take a Control as a parameter, clear all the textboxes in that control, then go through all the container controls, calling itself, passing in each one those controls.
|
|
|
|
|
I refer the honorable gentleman to my original reply:
Quote: provided they aren't inside any containers: Panel, Splitters, GroupBoxes, and so on. If they are, then you need to recurse though the container.Controls collection as well in order to find them.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
OriginalGriff wrote: I refer the honorable gentleman to my original reply Wow.
And this not the first time, you seem very patient and kind
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
See my reply on using 'GetType<> below. Call the method on YourGroupBox.Controls ... or any other ContainerControl [^]
«One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali
|
|
|
|
|
Normally the answer to your issue is still given ...
Perhaps additional :
What you have to do is :
- iterate throught the Controls-collection of your Form
- if the type of the control is a Textbox then do your work
- if not look if the control has entries in it's own controls-Collection
- if Yes : do the same again - please realize : your can also have a Panel inside a Panel inside a Panel ...
- also : realize that most of the controls could be also ContainerControls with controls in it
Why do the controls inside a Panel (or a GroupBox or a TabView or ...) not directly belong to the Form ? It is because there a some functions of the ConatinerControl which direct effect the cointrols in it - for example : Visible, Enable ...
But what you also can do is :
Create your own customized Control (derive it from the Control which matches most to your issue) and implement the function you need to it - for example : clear all Textboxes inside it ...
|
|
|
|
|
You can use 'OfType<> to select only cerain types of Controls:
foreach (var tb in this.Controls.OfType<TextBox>())
{
tb.Clear();
}
«One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali
|
|
|
|
|
Wow! Thanks for that, Bill. Good timing.
Yesterday evening I had written
bool found = false;
foreach (object obj in URIsMenu.Items)
if (obj is ToolStripMenuItem)
{
ToolStripMenuItem item = (ToolStripMenuItem)obj;
item.Checked = item.Text == SelectedItem;
if (item.Checked)
found = true;
}
Your useful reply has shortened that to
bool found = false;
foreach (ToolStripMenuItem item in URIsMenu.Items.OfType<ToolStripItem>())
{
item.Checked = item.Text == SelectedItem;
found |= item.Checked;
}
|
|
|
|
|
I was composing a reply to a QA question today [^], and I started thinking about why I made the following assumptions in C#:
1) app scoped global variables are evil
2) defining a static class outside my own/any NameSpace is evil.
Given the strongly-typed/OOP gestalt of C#, why did its designers allow something like this:
public static class Constants
{
public const double PI = Math.PI;
public static double E { set; get; } = Math.E;
}
namespace WhatEver
{} Opinions ?
«One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali
|
|
|
|
|
It doesn't have to be a static class, any class can be defined outside all namespaces, in which case it's part of the default namespace: namespace keyword - C# Reference | Microsoft Docs[^]
Quote: Whether or not you explicitly declare a namespace in a C# source file, the compiler adds a default namespace. This unnamed namespace, sometimes referred to as the global namespace, is present in every file. Any identifier in the global namespace is available for use in a named namespace.
Why? You'd probably have to ask the language authors ...
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
OriginalGriff wrote: Why? You'd probably have to ask the language authors I would ask Mads T. if I could
But, meanwhile, I am asking for opinions, or responses, from people here, like your keenly intelligent self.
Would you ever define a Class in the "default" NameSpace ?
cheers, Bill
«One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali
|
|
|
|
|
Only in web sites, where it seems to be the "done thing" for some reason - the default files created for a C# web project don't include any namespaces.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
BillWoodruff wrote: I would ask Mads T. if I could
You could always try asking him on Twitter: @MadsTorgersen[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Well, I do "cheap," but, I have never done "tweet," and, I swear, by the Hammer of King Ludd, never will.
Surely, a savant, like Thou, doesn't "tweet."
«One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali
|
|
|
|
|
I’ve done it.
“Evil” is not utilizing the features and allowances of a language because someone who couldn’t hack being a programmer decides something isn’t “best practice”.
In short, if it compiles, ship it.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
I have 12 sets of dll for multi purpose, when I deploy the particular dll and I get this error. Please help me on this!. Mine is a C# code
|
|
|
|
|