PropertyGrid question

F

Frank Rizzo

I added a PropertyGrid control to my form and set its SelectedObject
property to one of my objects which exposes a lot of properties of type
System.Drawing.Color. The System.Drawing.Color display fine, but they
don't have a dropdown where I can select a new color, like in the VS.NET.

How can I help the PropertyGrid display dropdowns for
System.Drawing.Color properties?

Thanks
 
B

Bob Powell [MVP]

I just did a quick test and you definitely get a color picker dropdown.

Are you messing with the Editor attribute on your property?

See after my sig for the code...

--
Bob Powell [MVP]
Visual C#, System.Drawing

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace colorpicker

{

/// <summary>

/// Summary description for Form1.

/// </summary>

public class Form1 : System.Windows.Forms.Form

{

private System.Windows.Forms.PropertyGrid propertyGrid1;

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentModel.Container components = null;

public Form1()

{

//

// Required for Windows Form Designer support

//

InitializeComponent();

this.propertyGrid1.SelectedObject=new foo();

}

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();

this.SuspendLayout();

//

// propertyGrid1

//

this.propertyGrid1.CommandsVisibleIfAvailable = true;

this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;

this.propertyGrid1.LargeButtons = false;

this.propertyGrid1.LineColor = System.Drawing.SystemColors.ScrollBar;

this.propertyGrid1.Location = new System.Drawing.Point(0, 0);

this.propertyGrid1.Name = "propertyGrid1";

this.propertyGrid1.Size = new System.Drawing.Size(292, 266);

this.propertyGrid1.TabIndex = 0;

this.propertyGrid1.Text = "propertyGrid1";

this.propertyGrid1.ViewBackColor = System.Drawing.SystemColors.Window;

this.propertyGrid1.ViewForeColor = System.Drawing.SystemColors.WindowText;

//

// Form1

//

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

this.ClientSize = new System.Drawing.Size(292, 266);

this.Controls.Add(this.propertyGrid1);

this.Name = "Form1";

this.Text = "Form1";

this.ResumeLayout(false);

}

#endregion

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

Application.Run(new Form1());

}

}

class foo

{

private Color _color;

public Color Color

{

get{return _color;}

set{_color=value;}

}

private int _smee;

public int Smee

{

get{return _smee;}

set{_smee=value;}

}

private float _flub;

public float Flub

{

get{return _flub;}

set{_flub=value;}

}

}

}
 

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