ListBoxから単一列へのDataGridViewへの項目の追加

私はDataGridViewにListの項目を追加する必要があります。

GridViewの最初の行に文字列リストの項目を入力する必要があり、GridViewの項目に対して1つずつ処理を行い、その結果を2行目(String)に追加する必要があります。

現在imこのようにDataGridViewをバインドしています

 dataGridView1.DataSource = mylist.ConvertAll(x => new { Value = x });
 dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

最初の行に文字列を追加する列名を事前に定義し、これらの文字列を1つずつ処理して2番目の列を更新する必要があります。

0

4 答え

まず、プログラムでカラムを構築する必要があります。あるいはデザイナーを使用することもできます - それはあなた次第です。例全体を示すために、すべてをコーディングします。

private DataGridView dgNew;

public MyForm()
{
    InitializeComponent();
    MyInitializeComponent();
}

private void MyInitializeComponent()
{
    dgNew = new DataGridView();

    var txtCol = new DataGridViewTextBoxColumn
    {
        HeaderText = "Column1",
        Name = "Column1",
        DataPropertyName = "Value"
    };
    dgNew.Columns.Add(txtCol);

    txtCol = new DataGridViewTextBoxColumn
    {
        HeaderText = "Column2",
        Name = "Column2",
    };
    dgNew.Columns.Add(txtCol);

    var listOfStrings = new List {"one", "two", "three"};
    dgNew.DataSource = listOfStrings.ConvertAll(x => new { Value = x }); ;
    dgNew.Location = dg.Location;
    dgNew.Parent = this;

    this.Load += Form_Load;
}

private void Form_Load(object sender, EventArgs e)
{
   //Iterate over the rows, ignoring the header row
    foreach (var row in dgNew.Rows.OfType().Where(a => a.Index != -1))
    {
        var col1Value = row.Cells["Column1"].Value?.ToString();
        var col2Cell = row.Cells["Column2"];

        if (col1Value == null) continue;

        switch (col1Value)
        {
            case ("one"):
                col2Cell.Value = "row1, col2 val";
                break;
            case ("two"):
                col2Cell.Value = "row2, col2 val";
                break;
            case ("three"):
                col2Cell.Value = "row1, col3 val";
                break;
        }
    }
}
1
追加された

まず、プログラムでカラムを構築する必要があります。あるいはデザイナーを使用することもできます - それはあなた次第です。例全体を示すために、すべてをコーディングします。

private DataGridView dgNew;

public MyForm()
{
    InitializeComponent();
    MyInitializeComponent();
}

private void MyInitializeComponent()
{
    dgNew = new DataGridView();

    var txtCol = new DataGridViewTextBoxColumn
    {
        HeaderText = "Column1",
        Name = "Column1",
        DataPropertyName = "Value"
    };
    dgNew.Columns.Add(txtCol);

    txtCol = new DataGridViewTextBoxColumn
    {
        HeaderText = "Column2",
        Name = "Column2",
    };
    dgNew.Columns.Add(txtCol);

    var listOfStrings = new List {"one", "two", "three"};
    dgNew.DataSource = listOfStrings.ConvertAll(x => new { Value = x }); ;
    dgNew.Location = dg.Location;
    dgNew.Parent = this;

    this.Load += Form_Load;
}

private void Form_Load(object sender, EventArgs e)
{
   //Iterate over the rows, ignoring the header row
    foreach (var row in dgNew.Rows.OfType().Where(a => a.Index != -1))
    {
        var col1Value = row.Cells["Column1"].Value?.ToString();
        var col2Cell = row.Cells["Column2"];

        if (col1Value == null) continue;

        switch (col1Value)
        {
            case ("one"):
                col2Cell.Value = "row1, col2 val";
                break;
            case ("two"):
                col2Cell.Value = "row2, col2 val";
                break;
            case ("three"):
                col2Cell.Value = "row1, col3 val";
                break;
        }
    }
}
1
追加された

これがあなたの解決策です、

        dgvDataViewer.ColumnCount = 1;
        dgvDataViewer.Columns[0].Name = "Language";

        string[] row = new string[] { "C#" };
        dgvDataViewer.Rows.Add(row);
        row = new string[] { "C++" };
        dgvDataViewer.Rows.Add(row);
        row = new string[] { "C" };
        dgvDataViewer.Rows.Add(row);

        DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
        cmb.HeaderText = "HeaderText";
        cmb.Name = "Name";
        cmb.FlatStyle = FlatStyle.System;
        dgvDataViewer.Columns.Add(cmb);

        DataGridViewComboBoxCell dgvcbc = (DataGridViewComboBoxCell)dgvDataViewer.Rows[0].Cells[1];
        dgvcbc.Items.Add("Apple");
        dgvcbc.Items.Add("Google");
        dgvcbc.Items.Add("Apache");
        dgvcbc.Items.Add("Microsoft");

これがあなたの解決に役立つことを願っています。

1
追加された

これがあなたの解決策です、

        dgvDataViewer.ColumnCount = 1;
        dgvDataViewer.Columns[0].Name = "Language";

        string[] row = new string[] { "C#" };
        dgvDataViewer.Rows.Add(row);
        row = new string[] { "C++" };
        dgvDataViewer.Rows.Add(row);
        row = new string[] { "C" };
        dgvDataViewer.Rows.Add(row);

        DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
        cmb.HeaderText = "HeaderText";
        cmb.Name = "Name";
        cmb.FlatStyle = FlatStyle.System;
        dgvDataViewer.Columns.Add(cmb);

        DataGridViewComboBoxCell dgvcbc = (DataGridViewComboBoxCell)dgvDataViewer.Rows[0].Cells[1];
        dgvcbc.Items.Add("Apple");
        dgvcbc.Items.Add("Google");
        dgvcbc.Items.Add("Apache");
        dgvcbc.Items.Add("Microsoft");

これがあなたの解決に役立つことを願っています。

1
追加された