|
I am looking to create a app that will inventory hardware.
Program details.
1. Create a GUI to: Allow the user to select a list of hardware properties (i.e Processor Speed)from a list of all properties of the selected hardware (i.e Processor) Save these settings to XML file
2. create console app to read XML file scan the hardware then write it to a DB.
I would like to use the GUI in step 1 as a front end to configure the console app in step 2. Should i save the setting in a XML file or some other place/document? What is the correct way of doing this sort of thing and by correct I mean best method from a programming stand point.
|
|
|
|
|
packetsmacker wrote: 1. Create a GUI to: Allow the user to select a list of hardware properties (i.e Processor Speed)from a list of all properties of the selected hardware (i.e Processor).
Take a look at a PropertyGrid control. You will need a class S which would have all required propertied exposed to public. Then set the PropertyGrid.SelectedObject property to an instance of the class S .
packetsmacker wrote: Save these settings to XML file
2. create console app to read XML file scan the hardware then write it to a DB.
Search for "XML serialization". The System.Xml.Serialization.XmlSerializer class allows you to both read and write from/to XML with Deserialize and Serialize methods. All you have to do is to pass the typeof(S) and .NET will do all dirty work for you.
Greetings - Jacek Gajek
|
|
|
|
|
I would just write an app to poll the system for it's hardware specs rather than ask a user for hardware specs. Furthermore, there is no point in saving to XML when the GUI can write straight to the database.
|
|
|
|
|
I see your point. I would like to have this run on startup or at a scheduled time. I guess i could just put all the info in to the db and filter out the stuff I don't want to see when I create the sql query
|
|
|
|
|
AFAIK you can query remote machines using WMI, so if your machines are networked and available, you may not need a periodic local action, nor a database.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
well that changes everything. I should have posted this question before I started coding. I think this will be all I need.
thanks
|
|
|
|
|
i want to display Form2 when click on button in Form1. but i don want to open Form2 as instand of Form2. so how can write the code ?
|
|
|
|
|
Please explain more clearly what you are trying to do
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
i have 2 form. Form1 and Form2. i want to open Form2 by Clicking a Button in Form1.
my code is follow. but my Form2 can appear alot as i click on Button. so i just to open Form2 only one even i click that Button many times .
private void button1_Click(object sender, EventArgs e)
{
form f = new form2();
f.Show();
}
|
|
|
|
|
I see, maybe something like this then...
Form2 form2;
private void button1_Click(object sender, EventArgs e)
{
if(form2 == null || form2.IsDisposed)
form2 = new Form2();
form2.Show();
}
Life goes very fast. Tomorrow, today is already yesterday.
modified on Wednesday, June 17, 2009 12:00 PM
|
|
|
|
|
musefan wrote: if(form2.IsDisposed || form2 == null)
I would prefer if(form2 == null || form2.IsDisposed )
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
yeah, I realised my mistake after posting but didn't want to change it. But just for you...
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
I would prefer if( null == form2 || form2.IsDisposed)
|
|
|
|
|
I would prefer...
if(form2.IsNullOrDisposedOrAnythingThatMightCauseANeedForANewInstance)
form2 = new Form2();
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
I don't, I never did those reverse compares, not in all my years programming in C and other languages that might benefit from it. It looks ugly, and it is unnecessary for Form variables: strongly typed languages with a boolean type don't need this at all, except maybe when the variable is of that boolean type. But even in C, where bools are just ints, I've always chosen not to do so.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
Luc Pattyn wrote: I never did those reverse compares, not in all my years programming in C and other languages that might benefit from it.
I suspect you never spent hours or days looking for bug that was caused by a typo dropping an '=' character that could have been avoided by a compiler error. As far as I'm concerned, it's a no-brainer to choose to take advantage of the compiler in every case you can.
|
|
|
|
|
Never has been a problem. We tend to use tools at their most critical setting; and most of the C compilers we used regularly accurately emitted warnings on anything that could be unintentional, such as missing equal signs and empty loop blocks.
And as I said before, strongly typed languages (we used to use Java a lot) offer a pretty good defense. See the mandatory breaks in a switch for instance.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
Luc Pattyn wrote: Never has been a problem. We tend to use tools at their most critical setting; and most of the C compilers we used regularly accurately emitted warnings on anything that could be unintentional, such as missing equal signs and empty loop blocks.
I'm not sure what you mean by "missing equal signs". In vs2008 with warnings and errors set to the strictest settings this compiles just fine:
int n = 1;
if( n = 2)
cout << "now it's two" << endl;
As far as I can remember I have never used a compiler that produce a warning or error on that because in C/C++ it's perfectly valid to evaluate an assignment result as an expression to be non-zero. So if you typo
n == 2 into n = 2 you get no warnings or errors but you don't get the intended behavior. However if you do:
2 == n and typo it to 2 = n you get a compiler error. It's your choice and since I don't have to maintain your code I don't really care what you choose.
|
|
|
|
|
Hi Mike,
Most of my work is done outside the PC and Microsoft arena; I am not very familiar with Visual Studio C++ compilers, if they don't warn you on if( n = 2) then that is too bad; a decent compiler knows such statement is valid, hence no error, but probably wrong, hence a warning, which can be disabled as all messages normally have a numeric code, or avoided by writing unambiguous code as in if((n = 2)!=0)...
That is what warnings are all about: pointing your attention at things that might be intentional and correct, and maybe are not.
BTW: most compilers also would warn you the condition is always true, making the if , and when present the else part, redundant.
Luc Pattyn [Forum Guidelines] [My Articles]
DISCLAIMER: this message may have been modified by others; it may no longer reflect what I intended, and may contain bad advice; use at your own risk and with extreme care.
|
|
|
|
|
So for example the gcc compiler will produce a warning on that? I will check that out. Thanks dude!
|
|
|
|
|
why it high like on line if(form2 == null || form2.IsDisposed) and message that "Use of unassigned local variable form2" . what wrong with this ?
|
|
|
|
|
set the initial value of form2 to null to avoid this compiler error.
Form2 form2 = null;
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
what is different between Close() and Dispose() ? please give me some explane .
|
|
|
|
|
Close()[^] will basically just hide the form and the form can still be accessed along with its properties and functions etc.
Dispose()[^] will effectively destroy the form and will not allow access to any of its properties or functions
See the documentation links provided for a more detailed explanation
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
i some code as bellow. it is mothed is called when click on MenuItem.problem is when i click item and command = "LOGOFF", it work correctly, but why i click a MenuItem and its command = "EXIT" , the visual studio doesn't stop debuging even my form was disappear?
void MenuItemCommand(ExtenderMenu btn )
{
switch (btn.Command )
{
case "LOGOFF":
Form2 f = null;
if ( f == null || f.IsDisposed)
{
f = new Form2();
f.Show();
}
this.Hide();
break;
case "EXIT":
this.Dispose();
break;
}
}
|
|
|
|