|
Apologies for the shouting but this is important.
When answering a question please:
- Read the question carefully
- Understand that English isn't everyone's first language so be lenient of bad spelling and grammar
- If a question is poorly phrased then either ask for clarification, ignore it, or mark it down. Insults are not welcome
- If the question is inappropriate then click the 'vote to remove message' button
Insults, slap-downs and sarcasm aren't welcome. Let's work to help developers, not make them feel stupid..
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
For those new to message boards please try to follow a few simple rules when posting your question.- Choose the correct forum for your message. Posting a VB.NET question in the C++ forum will end in tears.
- Be specific! Don't ask "can someone send me the code to create an application that does 'X'. Pinpoint exactly what it is you need help with.
- Keep the subject line brief, but descriptive. eg "File Serialization problem"
- Keep the question as brief as possible. If you have to include code, include the smallest snippet of code you can.
- Be careful when including code that you haven't made a typo. Typing mistakes can become the focal point instead of the actual question you asked.
- Do not remove or empty a message if others have replied. Keep the thread intact and available for others to search and read. If your problem was answered then edit your message and add "[Solved]" to the subject line of the original post, and cast an approval vote to the one or several answers that really helped you.
- If you are posting source code with your question, place it inside <pre></pre> tags. We advise you also check the "Encode "<" (and other HTML) characters when pasting" checkbox before pasting anything inside the PRE block, and make sure "Use HTML in this post" check box is checked.
- Be courteous and DON'T SHOUT. Everyone here helps because they enjoy helping others, not because it's their job.
- Please do not post links to your question into an unrelated forum such as the lounge. It will be deleted. Likewise, do not post the same question in more than one forum.
- Do not be abusive, offensive, inappropriate or harass anyone on the boards. Doing so will get you kicked off and banned. Play nice.
- If you have a school or university assignment, assume that your teacher or lecturer is also reading these forums.
- No advertising or soliciting.
- We reserve the right to move your posts to a more appropriate forum or to delete anything deemed inappropriate or illegal.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
I have the below function which is called with a button click. It is supposed to chart from a database. The problem is that when selecting from database I am filtering the database using "WHERE". When I don't use this "WHERE" and plot the whole database table, the code works fine, but when I use this filter, it often leads to blank charts even though the data is there in the table. What is wrong with this code?
void PlotChart()
{
try
{
chart1.Series.Clear();
Series First = new Series("Series11");
Series Second = new Series("Series12");
First.ChartType = SeriesChartType.Spline;
Second.ChartType = SeriesChartType.Spline;
First.Color = Color.Blue;
Second.Color = Color.Orange;
using (SqlConnection connection = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"))
{
if(connection.State == ConnectionState.Closed)
{
connection.Open();
}
string query = $"SELECT * FROM Data WHERE RawDataOrder = {Convert.ToInt32(label86.Text.Trim())}";
using (SqlCommand command = new SqlCommand(query, connection))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
int id = reader.GetInt32(0);
int value11 = reader.GetInt32(1);
int value12 = reader.GetInt32(8);
First.Points.AddXY(id, value11);
Second.Points.AddXY(id, value12);
}
}
}
}
chart1.Series.Add(First);
chart1.Series.Add(Second);
chart1.Titles.Clear();
chart1.Titles.Add(new Title("Channel 1"));
chart1.Update();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error PlotChart", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
|
|
|
|
|
without having your data it's difficult to say something because you've written "sometimes ... and sometimes not"
Have you ever checked with the Debugger wat kind of Data you get with yor Request which fails ? This would be my 1st approach to find out what happens ...
|
|
|
|
|
Iskander12345 wrote:
string query = $"SELECT * FROM Data WHERE RawDataOrder = {Convert.ToInt32(label86.Text.Trim())}"; Whilst in this specific instance you're probably safe, this sample suggests you're writing code which would be vulnerable to SQL Injection[^].
And even in this case, your code will result in query plan cache pollution - every value for the parameter will result in a different plan being compiled and stored.
Rather than trying to work out whether your values are "safe" to inject into the query, adopt a simple strategy: always use parameters.
const string query = "SELECT * FROM Data WHERE RawDataOrder = @RawDataOrder";
using (SqlCommand command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@RawDataOrder", Convert.ToInt32(label86.Text.Trim()));
...
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
im a newbie to coding,,how can i get highest for the below code
private decimal Lowest(int bar, ValueDataSeries src, int length)
{
if (bar < length)
return (0.0m);
decimal res = decimal.MaxValue;
for (int index = bar; index >= bar - (length - 1); index--)
{
if (src[index] < res)
res = src[index];
}
return (res);
}
modified yesterday.
|
|
|
|
|
Have you tried stepping through this code with a debugger so you know what each line is doing? The debugger will allow you to execute one line at the time and inspect all variable values as you do so.
When you are new to coding, debugging might seem to be an advanced topic you will learn later. This is a huge mistake. debugging is simple:
Tutorial: Debug C# code - Visual Studio (Windows) | Microsoft Learn[^] (if you do not use Visual Studio Google "tutorial debugging c# with xxxx" where xxxx is whatever you use to write code.
No matter if you are a professional or a beginner, the debugger is the tool that will save you the most time by far.
|
|
|
|
|
|
I upvoted the question because I cannot see any reason why anyone would down vote it.
|
|
|
|
|
Hello & Salutations to Everyone, using: Win Forms .NET 4.7.2
I have a set of Form buttons named button1, button2, button3,………
I have an array of strings BUTTON_LIST_str[] =” button1”, “button2”, “button3”,…
I have a function:
private void APPLY_BUTTON_CFG(Button b)
{ …………… }
What I need to do is loop through BUTTON_LIST_str[] and pass each button object to APPLY_BUTTON_CFG(Button b).
Basically for every string I need to use for pointing to a different type form object or its property of object, I get the error "String cannot be converted to the object required type/format (System.Form......)
I have searched every convoluted order of words for hours and cannot find a solution that matched my scenario of converting strings to all form object types (or specific ones either). With so many unique object specific variables how does one research the solution to convert a string to each type for each case?
Is there a ConvertToType universal function that solves this issue.
I also ran into same problem with:
FlatStyle P_STYLE = “Flat”;
Button1.FlatStyle = P_STYLE or FlatStyle.P_STYLE ; // error cannot convert string to…………..FlatStyle object type
I understand that a string name cannot point to a form object OOP when passing to a function. I’m not sure I can ask my question competently………….
With so many unique object specific variables how does one research the string conversion solution for each case?
Simply put, how would I research and find the solution for these types of problems:
Button1.FlatStyle = How to convert string to FlatStyle object reference, or Font, TextAlign when an error occurs?
I did find this translator for colors but not FlatStyle though or for any other applicable parameters.
P_COLOR = System.Drawing.ColorTranslator.FromHtml("White"); //"White" will be replaced with a string array element CFG_PARAM_PARSED[2]);
Button1.ForeColor = P_COLOR;
This is the real kicker: Button name as string (String_Array[x]) needs conversion (typecast?) to object name reference
var ButtonObject = String_Array[x]; or Button ButtonObject = String_Array[x];
APPLY_BUTTON_CFG(ButtonObject);
private void APPLY_BUTTON_CFG(Button b)
{
……………
}
Thank You So Much for your time and assistance…………………….
|
|
|
|
|
You would be much better off adding the controls themselves to the array, not the names of them. Those are bad control names by the way.
Why? Because if you go back and change the names of the controls to something sensible and debuggable, you need have to go through the code and find the control names you stuck in arrays and change those too.
Did you Google for "C# Windows Forms find control by name[^]"? There's plenty of results.
|
|
|
|
|
Hello Dave and Thank You very Much,
I understand and agree with you completely but I am taking an inverse approach due to my apps functionality. I am creating a SendKeys keyboard emulator which will have a pre compiled set of universal buttons all referenced by the simple button1-n name. I will have an excel config file with the button’s parameters (visibility, location, size, text, colors.... and key code) which will be loaded for each application I want to keyboard emulate. Instead of having to have multiple form layouts and keycodes for each interface application I will have a simple excel file to copy cut and paste parameters.
So from my excel config I can set number and string parameters but I can't store and retrieve object oriented parameters (def?), I have to store & retrieve them as strings.
The problem that hangs me up is when I have a parameter such as FlatStyle with has arguments of Standard, Flat, PopUp... that are not strings but some type of object property. So when I need to retrieve PopUp as a string I need to convert it to a type of object property.
var TypeOfStyleObject = convert-this-string-to-what-FlatStyle-wants("PopUp"); // PopUp will actually be a StringArray[x]
button1.FlatStyle = TypeOfStyleObject;
I studied the link you pointed out and it solved my problem, with an exception. I fetched the name of the CONTROL (not a specific control like Button) and changed my function input from BUTTON to CONTROL. It passed without error but I did find a catch....
In the function that I apply the configuration parameters to the generic buttons I successfully applied Text, BackColor, ForeColor as a quick test. When I was passing the Button control I was setting FlatStyle but getting a string to object error (above). Now that I am passing the Control control it is saying my "Control" does not have a parameter FlatStyle. I am interpreting this way..... the Control lets me work without specifying the type of object(button, label, RTBox) but I may lose access to some parameters??? Accurate??
I may need to still find a way of passing specific controls instead of generic control object so I don’t lose configurability. I could follow your lead of preloading a Button[] object array and trying see if I can use its index as an object.
Am going anywhere but backwards or circles…… I assuming there has to be some methods that allows you to convert-this-string-to-what-AnyObject-wants() so objects can be acted on in loops and sequences. You have to be able to store & retrieve non numeric config info (strings) that represent object.string.parameterss!!!!! read them & convert to string, save, retrieve, convert string back to object.
Thank You Again………….
|
|
|
|
|
If you look at the documentation for all these features you will see that they invariably have a numeric value which you can pass to the constructor, or set dynamically.
|
|
|
|
|
Your control is (still) also a button, and you can test for that using "is" and "as", and switch between them.
https://stackoverflow.com/questions/3786361/difference-between-is-and-as-keyword
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Thank You to Everyone ,
Your time is valuable and I appreciate it…………
I don’t comprehend ‘yet’ why when I pass a Button reference, I have a parameter to modify but when I pass it as a Control I’m told this parameter is no longer available, at the top level. I do understand there are other hooks into the control I haven’t learned yet.
The reality of the matter is I stepped on a puddle and found out it was a pot hole, I’m sailing in unfamiliar waters. I am a self-taught C#’er with a background from Verlog FPGA and C firmware with no one local to tutor me. I started writing GUI’s in order to aid and test FPGA and firmware code development plus the automation of production testing.
I’ve gotten away so far by walking around the ‘object mountain’ and I’ve reached a point I need to climb it. I have a strong background in state machine development and implementation, I just need to up the game on ‘objects’. I’m pretty good at making a big snow ball if I can figure out which direction to roll down the hill………..
As can been seen from my post I lack the vocabulary………… I was searching for Button when I should have been researching Controls. I fully comprehend the feedback I am getting but I’m lost in the implementation. Not having a full vocabulary in object language can you point me to a youtube series that would be a good launching point for me at my current level of comprehension. I find a free-flowing mind on video conveys more implementation guidance than a rigid text of facts.
A finger pointing in the right direction is all I really need…………..
Thank You Again for your time and help…….
|
|
|
|
|
Everything in c# (.NET) is an "object".
You then add dressing (a class) and turn it into something else. Add another class and make a composite of what came before. But it is still an "object" and also whatever comes after; you're just putting on and taking off diffferent coats. That's "inheritance" ... one of the "3 pillars" of OOP.
That, and understanding "value types" versus "reference types" ("pointers" to "objects" or functions) allow you to model just about anything in software.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Is that the essence of “wrapping”?? I have seen that term with a few libraries I have fiddled with from GitHub.
“understanding "value types" versus "reference types" ("pointers" to "objects" or functions)”
That sounds like the perfect search phrase to get me started………….
Thanks Again…………..
|
|
|
|
|
"Wrapping" (which is a "design pattern") is intentionally "hiding" one object by wrapping it with another in order to protect or facilitate certain features; not the same as "inheriting" which "adds" functionality.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Sounds a lot like a decorator pattern. Do you despise it? I mean, I do like adding functionality by using a decorator, and the .NET framework apparently too, as there are a lot of places where we use them.
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.
|
|
|
|
|
I said a wrapper can hide or "facilitate"; which is a good thing. I wrapped a C++ "animation" engine in a FoxPro dll so I could generate 3rd graphics using FoxPro. I did it to earn a license that normally cost $8,000. (A "long" time ago). I could create and race a buggy over 3D terrain ... The ultimate plan was to use the graphics engine in my "rail car repair system", but that's another track.
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
A "decorator" is usually there to add functionality?
Gerry Schmitz wrote: I could create and race a buggy over 3D terrain Now there is some code I'd like to read and learn from
I'm really bad at making games, I do forms and databases.
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.
|
|
|
|
|
I'm sure, with a bit of lateral thinking, you could make a game out of form filling.
|
|
|
|
|
Way off topic; I'll try. If I succeed, it will become a new article.
..I just never looked at it that way; it is a game, not a form. Input is input, regardless where it comes from?
Thank you for making my day
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.
|
|
|
|
|
What is a "game"?
I was a Windows Form evangelist because WPF didn't have a data grid at the time. Then WPF ... I now use UWP because it gets me in the Store, for one thing. (But now any exe can be added to the Store.)
My game consists mostly of moving rectangles around and measuring angles and distances. "Gettysburg!" It's under "Books and References" so I don't pay the "game premium".
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Codice Fictor wrote: Simply put, how would I research and find the solution for these types of problems:
The general problem is that you need to map one value to another value.
The specifics of the values for each is not really relevant. The process however, obviously, is.
Being a bit more specific to your problem you want to map a 'string' (text) to something.
I can't actually tell what you want to map to. But lets say, for example, that it is enum.
Then there are two choices.
1. The string must match the name of the enum exactly. You can get by without case sensitivity but otherwise it must be the same.
2. You MUST provide code that maps from the string to the enum.
Note that there are NO other choices. Pick one.
Lets say you want to pick 1. Then you cannot name a key 'A Key' because a space is not something that can appear in a enum name. You can google for how to convert from string to enum and back again.
Or if you pick 2. There are various ways to do this. But one way actually ends up looking like solution 1. So for example you would have a table that looks like what I posted below. You would read it then match the first value. Then use the second value to create an enum (like I said similar to 1.)
'A Key', 'KeyA'
'B Key', 'KeyB'
'= Key', 'KeyEquals'
Or you could just create a switch
switch(keyValue)
{
case "A Key": return KeyValue.KeyA;
case "B Key": return KeyVAlue.KeyB;
There are variations on this.
|
|
|
|
|