Afternoon Everyone,
I have started learning C# and I'm running into an issue with my project that uses a property grid. I have a directory with 16x16 png images. My end goal is to populate a combobox with the file name and image.
I have looked at several articles that a being populated off static values and list but i would need to read a directory to get the file names and images. IF someone could help get me on the right track that would be great. Below is the class i have written so far that will create an object to populate a property grid.
using System;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
using System.ComponentModel;
using System.Globalization;
using System.IO;
namespace PropertyGrid_Testing
{
class PG_Program
{
public object Action(string DisplayName, string Type, int Index, string Icon, string File, string Arguments)
{
Action MyWorker = new Action();
MyWorker.DisplayName = DisplayName;
MyWorker.Type = Type;
MyWorker.Index = Index;
MyWorker.Icon = Icon;
MyWorker.File = File;
MyWorker.Arguments = Arguments;
return MyWorker;
}
}
internal class Action
{
[Description("This is the Display Name used in the Context Menu.")]
[Category("Detials")]
public string DisplayName { get; set; }
[ReadOnly(true)]
[Description("This is the Type of item listed in the context menu. There can be Group, Action, or SEP. This setting gets set duing the new item creation.")]
[Category("Detials")]
public string Type { get; set; }
[Description("This is the index in wish you want the item to display.")]
[Category("Detials")]
public int Index { get; set; }
[Description("This is icon used to reference the context menu item.")]
[Category("Detials")]
public string Icon { get; set; }
[Description("This is item you wish to invoke. This can be anything, ex: exe, bat, png, xlsx...")]
[Category("Action")]
[BrowsableAttribute(true)]
[EditorAttribute(typeof(SaveFileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
public string File { get; set; }
[Description("(Optional) This references the arguments you wish to pass to the file you choose to invoke.")]
[Category("Action")]
public string Arguments { get; set; }
}
public class SaveFileNameEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (context == null || context.Instance == null || provider == null)
{
return base.EditValue(context, provider, value);
}
using (OpenFileDialog OFDialog = new OpenFileDialog())
{
if (value != null)
{
OFDialog.InitialDirectory = System.IO.Path.GetDirectoryName(value.ToString());
OFDialog.FileName = value.ToString();
}
OFDialog.Title = "Select Action Item";
OFDialog.Filter = "All files (*.*)|*.*";
if (OFDialog.ShowDialog() == DialogResult.OK)
{
value = OFDialog.FileName;
}
}
return value;
}
}
}