1

私はWindows Formdgvを持っています。今のところは表示目的のためだけなので、ダミー データを使用して 1 つの行にデータを入力します。また、クリックするたびAdd New Rowに新しい空の行を追加する必要があるという名前のボタンもあります。dataGridViewdgv の初期設定では、次loadのようなフォームのイベントを使用します。

private void Form1_Load(object sender, EventArgs e)
{
    dataGridView1.AutoGenerateColumns = false;

    MyData td13 = new MyData();

    td13.colorCombinationColumn = "aff";

    td13.remarksColumn = "abcdddd";

    td13.prodColumn = true;

    td13.LastModifiedColumn = "ab";

    td13.ByColumn = "abc";

    MyData[] arr = new MyData[2];
    arr[0] = td13;

    dataGridView1.DataSource = arr;

}

MyDataこのクラスはどこですか:

public class MyData
{
    private int mId;

    private string mCombination;

    private string mremarks;

    private bool mprod;

    private string mLastModified;

    private string mBefore;


    public int Id
    {
        get
        {
            return mId;
        }

        set
        {
            ...

ここまでは順調ですが、ボタンを追加してclickイベントを処理します。

private void btnAddRow_Click(object sender, EventArgs e)
{
    SoleData[] arr = new SoleData[1];
    dataGridView1.DataSource = arr;
}

そして、ここで問題が発生します。私dataGridView1.Rows.Add(1);が言うならRows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.。ご覧のとおり、他のアプローチをいくつか試しましたが、これまでのところ成功していません。

4

1 に答える 1

2

BindingList<MyData>の代わりにを使用してみてくださいMyData[] arr。リストに加えた変更はすべてDGVに反映され、それ以上のコードは必要ありません。(また、リストをフォームのプライベートフィールドとして宣言します。)

于 2013-02-06T12:08:21.060 に答える