0

に があり、 にアイテムを追加したいDataGridViewComboBoxColumnという問題があります。DataGridViewDataSource

最初に DataSource プロパティをList<string>正常に動作する に設定しました。後で、このリストに項目を追加しますが、これは正常に機能します。しかし、コンボボックスでこのアイテムを選択しようとすると、データ検証エラーが発生します。

System.ArgumentException: DataGridViewComboBoxCell 値が無効です。

さらに、コンボボックスを新しく追加された値に実際に設定することはできません。

これは完全に機能する例です。

public partial class Form1 : Form
{
    List<string> Data { get; set; }

    public Form1()
    {
        InitializeComponent();

        // Populate our data source
        this.Data = new List<string> { "Thing1", "Thing2" };

        // Set up controls
        var gvData = new System.Windows.Forms.DataGridView();
        var col1 = new System.Windows.Forms.DataGridViewComboBoxColumn();
        var button = new System.Windows.Forms.Button();

        gvData.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { col1 });

        // Set the column's DataSource
        col1.DataSource = this.Data;
        col1.HeaderText = "Test";
        col1.Name = "col1";

        // Set up a button which adds something to the source
        button.Text = "Add";
        button.Location = new System.Drawing.Point(0, 200);
        button.Click += (e, s) => this.Data.Add("Thing3");

        this.Controls.Add(gvData);
        this.Controls.Add(button);
    }
}

の にアイテムを追加するにはどうすればよいDataSourceですDataGridViewComboBoxColumnか?

4

1 に答える 1

1

変化

button.Click += (e, s) => this.Data.Add("Thing3");

           button.Click += (e, s) =>
           {
                col1.DataSource = null;
                this.Data.Add("Thing3");
                col1.DataSource = Data;
           };

私のために働いています。

于 2013-04-02T02:02:39.253 に答える