PropertyGrid - how to display a string array as dropdown property

S

Steve

I am using a property grid to display a classes properties, all is OK for
single value properties but i need to display a list of strings for the user
to select from and update the property value based on the selection.
A Drop down list in the property grid would be ideal.
For instance - like the StartPosition property of a form in the IDE.

I think this would be a simple and often used procedure but i have not been
able to locate an example of the code required, can anyone advise?
 
M

Marc Gravell

Normally this would be done via the type-converter of the property-type
(string in this case), which you obviously can't change in this
scenario. You could encapsulate the string into a simple class, and set
the converter for that, otherwise just set the converter for the
property:

using System;
using System.ComponentModel;
using System.Windows.Forms;
public class MyTest
{
private int test1;
public int Test1
{
get { return test1; }
set { test1 = value; }
}
private string test2;
[TypeConverter(typeof(StringListConverter))]
public string Test2
{
get { return test2; }
set { test2 = value; }
}
}
public class StringListConverter : TypeConverter
{
public override bool
GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true; // display drop
}
public override bool
GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true; // drop-down vs combo
}
public override StandardValuesCollection
GetStandardValues(ITypeDescriptorContext context)
{
// note you can also look at context etc to build list
return new StandardValuesCollection(new string[] { "abc",
"def", "ghi" });
}
}
class Program
{
static void Main()
{
using (Form f = new Form())
using(PropertyGrid pg = new PropertyGrid())
{
pg.Dock = DockStyle.Fill;
pg.SelectedObject = new MyTest();
f.Controls.Add(pg);
Application.Run(f);
}
}
}
 
S

Steve

Thanks, works fine, I would like to extend my use of the Property grid
to include objects within objects that would also be viewable/updateable
within the one property grid.
Can you point me in the direction of tutorial type documentation for
property grid, the help doc explanations are difficult for me to grasp?

rgds,Steve
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top