关于如何解决这个问题有不同的方法。我发布这个答案是因为我正在处理类似的情况并找到了一个不错的解决方案。必须将 DataGridView 放在您的公式上,其余部分(在此示例中)在代码中完成。首先,我们从 DataGridView 的 DataSource 开始。
DataTable myData = new DataTable();
myDataGridView.AutoGenerateColumns = false;
关闭自动生成很重要,因此我们可以根据需要设置列。现在向我们的 DataTable 添加一些数据。在这个例子中猫:
myData.Columns.Add("Name", typeof(string));
myData.Columns.Add("Gender", typeof(string));
myData.Rows.Add(new object[] {"Ser Pounce", "male"});
myData.Rows.Add(new object[] {"Fluffy", "male"});
myData.Rows.Add(new object[] {"Peach", "female"});
在我们指定数据及其列之后,我们可以在 DataGridView 中创建特定的列。
DataGridViewTextBoxColumn nameColumn = new DataGridViewTextBoxColumn();
nameColumn.HeaderText = "Cat name";
nameColumn.DataPropertyName = "Name";
nameColumn.ReadOnly = true;
DataGridViewComboBoxColumn genderColumn = new DataGridViewComboBoxColumn ();
List<string> genderList = new List<string>() { "male", "female", "unknown" };
genderColumn.DataSource = genderList;
genderColumn.HeaderText = "Gender";
genderColumn.DataPropertyName = "Gender";
genderColumn.ValueType = typeof(string);
myDataGridView.DataSource = myData;
myDataGridView.Columns.AddRange(nameColumn, genderColumn);
在添加定义的列之前,将我们的数据添加为 DataGridView 的数据源。请注意,每列 (DataGridView) 的 DataPropertyName 必须与我们在 DataTable 中为列指定的名称相同。HeaderText 可以以不同的方式命名。最后匹配列和数据的ValueType。