C# 如何使用组合框仅填充GridView的选定单元格

C# 如何使用组合框仅填充GridView的选定单元格,c#,winforms,datagridview,combobox,C#,Winforms,Datagridview,Combobox,我的目标很简单。假设我在DataGridView中填写了5行数据。在第1列中,我填写了如下所示的数据。用户应在第二列填写数据 姓名:-- 年龄:—— 地区:-- D.O.B:-- 声明:-- 现在,我必须在DataGridView的第2列中仅为“地区”和“州”行放置组合框,并使其余行保持可编辑状态。使用DataGridView,我可以将所有行设置为ComboBox或TextBox。我在谷歌上搜索了这个,但没有用。我也尝试过第三方工具,但没有找到这种类型的实现。我尝试使用ListView/Tree

我的目标很简单。假设我在DataGridView中填写了5行数据。在第1列中,我填写了如下所示的数据。用户应在第二列填写数据

姓名:--

年龄:——

地区:--

D.O.B:--

声明:--

现在,我必须在DataGridView的第2列中仅为“地区”和“州”行放置组合框,并使其余行保持可编辑状态。使用DataGridView,我可以将所有行设置为ComboBox或TextBox。我在谷歌上搜索了这个,但没有用。我也尝试过第三方工具,但没有找到这种类型的实现。我尝试使用ListView/TreeView而不是DataGridView,但没有实现。我使用的是C#Winforms VS2010

如果有任何想法,我准备从头开始。提前谢谢

编辑: 下面是输出,突出显示的“行”应为“组合框”,其余应为“文本框”。

如果我添加下面的代码,整个列将更改为ComboBox

        DataGridViewComboBoxColumn districtColumn = new DataGridViewComboBoxColumn();
        districtColumn.DataPropertyName = "container";
        districtColumn.HeaderText = "Details";
        districtColumn.ValueType = typeof(Container);
        districtColumn.DisplayMember = "District";  
        districtColumn.ValueMember = "code";
        districtColumn.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;

        dataGridView1.Columns.Add(districtColumn);
希望你现在明白我的问题了


谢谢..

啊。。。这次我抓住你了

您需要的是,创建一个comboxcell并将其放置在网格视图单元中

DataGridViewComboBoxCell  cmbcell = new DataGridViewComboBoxCell();
cmbcell.DataSource = Districts; // Your data source

DataGridViewCell normalcell = new DataGridViewTextBoxCell();
normalcell.Value = "Name"; // creating the text cell

dataGridView1.Rows[iRowIndex].Cells[1] = cmbcell; // use your own logic to set row index
dataGridView1.Rows[iRowIndex].Cells[1] = normalcell;

希望这有帮助

这似乎不是一个
DataGridView
可表示的数据。最好看看
PropertyGrid
控件。我将选中这一个。谢谢您的建议。没问题,如果您有进一步的问题/澄清,请在此处发布。这不起作用,因为ComboBox应用于列的所有行。@Gopi,我想您对所有列都使用了combo列模板,我已经更新了的代码来声明其他列。谢谢,它工作正常。还有一个帮助,当我点击组合框时,显示的是项目,但是项目的宽度大于组合框的宽度。如何处理这个问题。