473,399 Members | 3,401 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,399 software developers and data experts.

enumeration and how to populate them during runtime

I have a question about enumeration and how to populate them during
runtime.
I am using vb.net but will happily take any advice in c# as well.
Here is an example to help illustrate what I am after.

Create a class named “clsMyItems” and in that class place an enum.
Public Enum Items
Item1 = 0
Item2 = 1
Item3 = 2
End Enum

Now from another class call the Items enum.

Dim MyItems as new clsMyItems

MyItems.Items.

After typing the last dot in “MyItems.Items.” the intellisense will show
a nice drop down list of all the enumerated items in Items. This is
exactly what I am looking for.

Now for the problem…
I don’t know ahead of time what items or how many of them will be listed
in the Items enum. This is just a simplified example of what will
eventually go into a custom control I am working on. If I can get past
this issue it will make the control insanely easy to use.

Is there a way to populate the Items enum at runtime or an equivalent
method that will give me the drop down list I so desperately need.

If it makes a difference, the control inherits from
System.ComponentModel.Component

I could do it as System.Windows.Forms.UserControl but I would prefer to
do it as a component since it will never be seen on any form.
Its primary use is for windows forms but it will be used on web forms
I’m sure.
Nov 20 '05 #1
3 10595
Sampson,

Not sure exactly what you want to do but
System.Enum.GetValues(GetType(Items)) will return an array of all the values
in Enum Items

For example, you can populate a combo box with the values of
'ProjectCategory' enumeration as follows
myCombo.DataSource = System.Enum.GetValues(GetType(ProjectCategory))

Stephen

"Sampson" <no*****@none.com> wrote in message
news:c2**********@daisy.noc.ucla.edu...
I have a question about enumeration and how to populate them during
runtime.
I am using vb.net but will happily take any advice in c# as well.
Here is an example to help illustrate what I am after.

Create a class named “clsMyItems” and in that class place an enum.
Public Enum Items
Item1 = 0
Item2 = 1
Item3 = 2
End Enum

Now from another class call the Items enum.

Dim MyItems as new clsMyItems

MyItems.Items.

After typing the last dot in “MyItems.Items.” the intellisense will show
a nice drop down list of all the enumerated items in Items. This is
exactly what I am looking for.

Now for the problem…
I don’t know ahead of time what items or how many of them will be listed
in the Items enum. This is just a simplified example of what will
eventually go into a custom control I am working on. If I can get past
this issue it will make the control insanely easy to use.

Is there a way to populate the Items enum at runtime or an equivalent
method that will give me the drop down list I so desperately need.

If it makes a difference, the control inherits from
System.ComponentModel.Component

I could do it as System.Windows.Forms.UserControl but I would prefer to
do it as a component since it will never be seen on any form.
Its primary use is for windows forms but it will be used on web forms
I’m sure.

Nov 20 '05 #2
I'm building a custom control that when placed on a form will give me
intellisense access to the valid values for that item.

So on my form I would type something like "UserControl1.Items.(the
enumerated list would appear here)".

I don’t know what the list of items will be until a property is set on
the control so I need a way to set that enumeration up during runtime.

I have tried a reflection routine and while it appears to run, I can’t
figure out where to find the newly created enumeration...

Here’s the code I just tried.

Private Sub createPermissionEnums()
Dim currentDomain As AppDomain
Dim myAssemblyName As System.Reflection.AssemblyName
Dim myAssemblyBuilder As System.Reflection.Emit.AssemblyBuilder
Dim myModuleBuilder As System.Reflection.Emit.ModuleBuilder

' Get the current application domain for the current thread.
currentDomain = AppDomain.CurrentDomain

' Create assembly in current currentDomain
myAssemblyName = New System.Reflection.AssemblyName
myAssemblyName.Name = "TempAssembly"

' Define a dynamic assembly in the 'currentDomain'.
myAssemblyBuilder =
currentDomain.DefineDynamicAssembly(myAssemblyName ,
System.Reflection.Emit.AssemblyBuilderAccess.Run)

' Define a dynamic module in "TempAssembly" assembly.
myModuleBuilder =
myAssemblyBuilder.DefineDynamicModule("TempModule" )

' Define a enumeration type with name 'MyEnum' in the 'TempModule'.
Dim myEnumBuilder As System.Reflection.Emit.EnumBuilder =
myModuleBuilder.DefineEnum("MyEnum", Reflection.TypeAttributes.Public,
GetType(Integer))

' Define the named static fields in the enumeration type 'MyEnum'.
myEnumBuilder.DefineLiteral("MyEnumMember1", 2)
myEnumBuilder.DefineLiteral("MyEnumMember2", 3)
myEnumBuilder.CreateType()

End Sub


Stephen Muecke wrote:
Sampson,

Not sure exactly what you want to do but
System.Enum.GetValues(GetType(Items)) will return an array of all the values
in Enum Items

For example, you can populate a combo box with the values of
'ProjectCategory' enumeration as follows
myCombo.DataSource = System.Enum.GetValues(GetType(ProjectCategory))

Stephen

"Sampson" <no*****@none.com> wrote in message
news:c2**********@daisy.noc.ucla.edu...
I have a question about enumeration and how to populate them during
runtime.
I am using vb.net but will happily take any advice in c# as well.
Here is an example to help illustrate what I am after.

Create a class named “clsMyItems” and in that class place an enum.
Public Enum Items
Item1 = 0
Item2 = 1
Item3 = 2
End Enum

Now from another class call the Items enum.

Dim MyItems as new clsMyItems

MyItems.Items.

After typing the last dot in “MyItems.Items.” the intellisense will show
a nice drop down list of all the enumerated items in Items. This is
exactly what I am looking for.

Now for the problem…
I don’t know ahead of time what items or how many of them will be listed
in the Items enum. This is just a simplified example of what will
eventually go into a custom control I am working on. If I can get past
this issue it will make the control insanely easy to use.

Is there a way to populate the Items enum at runtime or an equivalent
method that will give me the drop down list I so desperately need.

If it makes a difference, the control inherits from
System.ComponentModel.Component

I could do it as System.Windows.Forms.UserControl but I would prefer to
do it as a component since it will never be seen on any form.
Its primary use is for windows forms but it will be used on web forms
I’m sure.



Nov 20 '05 #3
Sampson,
Enum values are known at compile time.

It sounds like you want some sort of (readonly?) Collection object,
unfortunately Collection objects do not participate in intellisense (in that
you do not get a list of values at runtime).

You will need to decide if you want an Enum (intellisense) or a Collection
(no intellisense).

Note: you can use a TypeConverter to display the dynamic list of values from
the collection in the Property window of the designers (Component or
Control) you just cannot get the list of values in the Intellisense. Post if
you need info on using a TypeCOnverter to get the dynamic list of values in
the Property window of the designers...

Hope this helps
Jay

"Sampson" <no*****@none.com> wrote in message
news:c2**********@daisy.noc.ucla.edu...
I have a question about enumeration and how to populate them during
runtime.
I am using vb.net but will happily take any advice in c# as well.
Here is an example to help illustrate what I am after.

Create a class named “clsMyItems” and in that class place an enum.
Public Enum Items
Item1 = 0
Item2 = 1
Item3 = 2
End Enum

Now from another class call the Items enum.

Dim MyItems as new clsMyItems

MyItems.Items.

After typing the last dot in “MyItems.Items.” the intellisense will show
a nice drop down list of all the enumerated items in Items. This is
exactly what I am looking for.

Now for the problem…
I don’t know ahead of time what items or how many of them will be listed
in the Items enum. This is just a simplified example of what will
eventually go into a custom control I am working on. If I can get past
this issue it will make the control insanely easy to use.

Is there a way to populate the Items enum at runtime or an equivalent
method that will give me the drop down list I so desperately need.

If it makes a difference, the control inherits from
System.ComponentModel.Component

I could do it as System.Windows.Forms.UserControl but I would prefer to
do it as a component since it will never be seen on any form.
Its primary use is for windows forms but it will be used on web forms
I’m sure.

Nov 20 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Sampson | last post by:
I have a question about enumeration and how to populate them during runtime. I am using vb.net but will happily take any advice in c# as well. Here is an example to help illustrate what I am...
0
by: dgoel | last post by:
Hi, I Have a text file & I want to open it in excel sheet ( withou importing). I have written code for it, but it is not opening exce sheet. It opens the text file, but does not create a excel...
4
by: Marshal | last post by:
Sure... IEnumerable was inconvenient suggesting a separate class to service the enumeration, IEnumerator, and multiple operations: Current, MoveNext, Reset. (I'll warp the definition of "operation"...
7
by: Don | last post by:
I need to get the type of an enumeration from an instance of a class. e.g. Public Class MyClass Public Enum MyEnum value1 = 1 End Enum End Class
10
by: MLH | last post by:
My A97 runtime installations are sometimes paused during the install process prompting user with messages saying the files are in use. Generally, I tell them to click IGNORE. Although I haven't...
0
by: p | last post by:
I am wirting an applications where I use Roles. My roles are held in an SQL Table where the fields are simply RolID and RoleName. I am writing the Application in ASP.NET. I assign the roles to...
0
by: John Saunders | last post by:
Given a schema as follows: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">...
0
by: Rich | last post by:
Hello, I started using the Reportviewer control (very nice) for generating Reporting Services type reports in my VB2005 app. I have been experimenting using a designer Reportviewer control from...
1
by: PPA | last post by:
Hi Guys I am really new to XML/XSD and Castor. Could you please help me out here? I have following XSD: -----------------------------XSD STARTS----------------------------------- <xs:schema...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.