|
Hi,
I want to cast the string output of the selected value from dropdown to an enum.
What is the best way to do it?
Thanks,
|
|
|
|
|
Enum.Parse(typeof(enumName), stringNameOfEnumValue);
or (.NET 4.0 and above only)
Enum.TryParse<enumName>(stringNameOfEnumValue, out placeToPutValue);
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Manfred R. Bihy: "Looks as if OP is learning resistant."
|
|
|
|
|
I tried,
Enum.Parse(((System.Type)n1.n2.n3.enum1), stringval,true);
but gives error that enum1 is a type not valid in current context
where n1.n2.n3 is the namespace where public enum enum1 is declared.
|
|
|
|
|
Then try what was actually suggested instead
I may or may not be responsible for my own actions
|
|
|
|
|
As musefan said, try what I gave you, not an interpretation of it:
For example:
public enum DriveType : int
{
Unknown = 0,
NoRoot = 1,
Removable = 2,
Localdisk = 3,
Network = 4,
CD = 5,
RAMDrive = 6
}
...
DriveType dt = (DriveType) Enum.Parse(typeof(DriveType), "RAMDrive");
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Manfred R. Bihy: "Looks as if OP is learning resistant."
|
|
|
|
|
Good answer, but just thought I'd mention that you then have to cast the result back:
MyEnum value = (MyEnum)Enum.Parse(typeof(MyEnum), str);
Also, it will throw an exception (FormatException, I think?) if the value is invalid so if this is being run from user input where that is a possibility, it should be caught.
|
|
|
|
|
Those are two of the reasons I prefer the TryParse version. Unfortunately, it is only available in .NET 4.0 and above.
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Manfred R. Bihy: "Looks as if OP is learning resistant."
|
|
|
|
|
hI,
This worked for me:
n1.n2.n3.enum = (n1.n2.n3.enum)Enum.Parse(typeof(n4.n5.n6.enum),stringval)
where n1..6 are name spaces where respective enums are defined.
Thanks for evryone's help.
|
|
|
|
|
You definitely shouldn't do that! If you have any differences between the two enums in the different namespaces, you will get bad results. The only reason it doesn't complain is that Enum.Parse returns an object, which can be cast to either type.
This is another reason why I prefer the TryParse method: It is strongly typed!
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Manfred R. Bihy: "Looks as if OP is learning resistant."
|
|
|
|
|
It's actually simple enough to create one and put it in a utility class (or even an extension method, if you are in 3.5).
T TryParseEnum<T>(string s, T defaultValue){
try { return (T)Enum.Parse(typeof(T), s); }
catch(Exception) { return defaultValue; }
}
|
|
|
|
|
If the item list of the combobox is fixed and contains valid enum values only, then it is ok to do a direct cast of the SelectedItem.
enum Fruit { Quince, Gooseberry, Damson }
public void InitialiseControls() {
FruitComboBox.DataSource = Enum.GetValues(typeof(Fruit));
}
private void EatFruitBtn_Click(object sender, EventArgs e) {
Fruit yummy = (Fruit)FruitComboBox.SelectedItem;
}
Alan.
|
|
|
|
|
Hello experts,
I would like to ask how will I sync the data of 2 C# projects I created. I created a windows form application which use sql server 2005 express as its database and I also create an asp.net website that uses sql server 2005 express(The asp website and its database is uploaded to a hosting site).
Any comments or suggestions are kindly appreciated.
Thanks,
DAN
|
|
|
|
|
You best bet would be to create a WCF service that resides on your websites server. Then both Windows application and Website can access the same database, or the windows app could use it's own database, and only update the main database on the Webserver occasionally.
...and I have extensive experience writing computer code, including OIC, BTW, BRB, IMHO, LMAO, ROFL, TTYL.....
|
|
|
|
|
Hello,
Thanks for the immediate reply, I would like to ask again. If I create a wcf service in my asp.net website do I still need my windows form application database?
Thanks,
DAN
|
|
|
|
|
That would depend on your requirements. Personally, I like to use a separate database for the Windows application, which would be a local data cache, which can periodically update the main database. This way, if there are any connectivity problems with the Windows application, the users can still carry on.
Hope this helps.
...and I have extensive experience writing computer code, including OIC, BTW, BRB, IMHO, LMAO, ROFL, TTYL.....
|
|
|
|
|
Hello,
Thanks alot, got a big idea on what you said
I forgot that it might cause trouble if I use only the database of website.
Would you mine if you could give some link about wcf services for my asp.net website.
Thanks,
DAN
|
|
|
|
|
You could start with this MSDN article about Hosting and Consuming WCF Services[^]. I leave the rest to you. Good Luck.
...and I have extensive experience writing computer code, including OIC, BTW, BRB, IMHO, LMAO, ROFL, TTYL.....
|
|
|
|
|
I have created a class library called TestCOM.dll and build the solution successfully and even though I created the application in different directory, I just copied the dll and put it in C:\Meeram395\TestCOM.dll
Inorder to register the dll, I use the following command
regasm TestCom.dll /tlb:TestCom.tlb /codebase TestCom
I got the message that the dll registered successfully. When I tested in assembly folder, I couldn't see the assembly. So I used the following command again to register:
gacutil /i testCOM.dll
I got the message that "Assembly registered successfully in cache".
But still I am not able to see the same in assembly folder. Not sure what's happening.
When I try to unregister, I am getting an error message assembly file not found. But then, why it is giving successful message initially? Should i do something else.
Thanks in advance,
meeram395.
Success is the good fortune that comes from aspiration, desperation, perspiration and inspiration.
|
|
|
|
|
Can you tell us what version of .Net the dll is compiled against, as .Net 4.0 assemblies get posted to C:\Windows\Microsoft.Net\assembly\GAC_MSIL, while earlier .Net dlls are still posted to assembly folder.
...and I have extensive experience writing computer code, including OIC, BTW, BRB, IMHO, LMAO, ROFL, TTYL.....
|
|
|
|
|
Ok. Thanks very much. I think I am using VS 2010, which is .Net 4.0. Let us confirm
Success is the good fortune that comes from aspiration, desperation, perspiration and inspiration.
|
|
|
|
|
Thanks a lot!!!! It's there in MSIL folder. A great help.
Success is the good fortune that comes from aspiration, desperation, perspiration and inspiration.
|
|
|
|
|
It's a pleasure.
...and I have extensive experience writing computer code, including OIC, BTW, BRB, IMHO, LMAO, ROFL, TTYL.....
|
|
|
|
|
hello , read pst file and PST file and convert into DBX, Live, Thunderbird.
how I do this ,please help me
thanks in advance
modified on Thursday, April 14, 2011 6:39 AM
|
|
|
|
|
Well, you're going to have to understand the PST file format, completely. You can find the docs on it here[^].
Then you'll have to write your own object model to parse up and represent the parts of the PST file you want to handle. I figure, you've got about 6 months worth of work to do this.
No, there is no API to do this for you, that is, without installing Outlook.
Good Luck!
|
|
|
|
|
but how, give me some example
|
|
|
|
|