1

次のコードを使用して、型コンバーターを使用して、文字列配列プロパティ グリッドのリスト ボックスとして表示します。 ロードされた最初のプログラムを初期化するためにリストボックスのインデックスを選択する方法は? SelectedIndex = 0、最初の arrData = "one" を表示します。何か案が?

public partial class Form1 : Form
{
    string[] arrData = new string[] { "one", "two", "three" };
    PropertyGrid pGrid = new PropertyGrid();

    public Form1()
    {
        InitializeComponent();

        FirstClass fClass = new FirstClass(arrData);
        pGrid.SelectedObject = fClass;
        pGrid.Dock = DockStyle.Fill;
        this.Controls.Add(pGrid);
    }

    public class FirstClass
    {
        public FirstClass(string[] arrData)
        {
            this.DataSource = arrData;
        }

        [Browsable(true)]
        [DefaultValue("one")]
        [TypeConverter(typeof(SecondClass))]
        public string Counter { get; set; }

        [Browsable(false)]
        public string[] DataSource { get; set; }

    }

    public class SecondClass : StringConverter
    {
        public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
        {
            return true;
        }

        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            FirstClass fClass = (FirstClass)context.Instance;
            if (fClass == null || fClass.DataSource == null)
            {
                return new StandardValuesCollection(new string[0]);
            }
            else
            {
                return new StandardValuesCollection(fClass.DataSource);
            }
        }

    }

}
4

1 に答える 1

0

私があなたの言うことを正しく理解していれば、リストボックスで選択したアイテムのインデックスを0に設定したいだけなら、以下のコードと同じくらい簡単なはずです。

ListBox.SelectedIndex = 0;

詳細については、MSDNページを確認してください。

http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.selectedindex.aspx

于 2012-12-12T09:00:13.043 に答える