Da der Code nicht zeigt, wie die Spalten aufgebaut sind, ist es schwierig zu sagen, was das Problem sein könnte, aber der Code verwendet nicht die DataGridViewComboBoxColum
. Die DataGridViewComboBoxColumn
ist alles, was Sie brauchen, um jede Zeile in Spalte 0 ein Kombinationsfeld mit "Male", "Female" Wahlen zu machen.
Die fehlerhafte foreach
-Schleife ist falsch und wird nicht kompiliert. Ich nehme an, eine for
Schleife ist, was Sie gesucht haben. Nach dieser for
Schleife ... wird eine neue Zeile korrekt zum Gitter hinzugefügt. Dann wird eine neue DataGridViewComboBoxCell
erstellt und die Zelle [0] der aktuellen Zeile hinzugefügt. dataGridView1.Rows[counter].Cells[0] = cbCell;
. Diese Zelle [0] wird jeder neuen Zeile hinzugefügt.
Dies ist nicht erforderlich, wenn die DataGridViewViewComboBoxColumn
richtig eingerichtet ist. Hinzufügen der DataGridViewComboBoxCell
ist absolut gültig und ermöglicht es Ihnen, eine Combo-Box in eine "SINGLE" Zelle zu setzen. Es funktioniert jedoch, wenn es so verwendet wird, macht die Verwendung der Kombinationsbox selbst fragwürdig.
Die Schleife "fügt" Daten zu dataGridView1
hinzu. Während Sie in den Daten lesen, scheint der Teil über "Geschlecht" (männlich, weiblich) zu fehlen, so dass der Wert nicht wie die anderen Werte eingestellt ist. Beispiel: Es gibt nicht eine Zeile wie folgt:
dataGridView1.Rows[counter].Cells[0].Value = gender[counter];
Wenn es ein „Gender“ Array, das diese Informationen gehalten wird, dann, wenn der Code diesen Wert setzt (männlich, weiblich) in der Codezeile über dem Combo In der Boxspalte wird die Auswahl des Kombinationsfelds automatisch auf diesen Wert gesetzt. Die Daten werden nur "eins" (1) der zwei Werte sein.
Also vorausgesetzt, dies ist das, was Sie suchen der Code unten zeigt, wie das DataGridViewComboBoxColumn
Ein Wort der Vorsicht verwenden, wenn Daten in ein Kombinationsfeld Zelle zu lesen; Wenn die Zeichenfolgedaten für die Kombinationsfeldspalte NICHT mit einem der Elemente in der Listenliste der Kombinationsfelder übereinstimmen, stürzt der Code ab, wenn er nicht abgefangen und adressiert wird. Wenn der Wert eine leere Zeichenfolge ist, setzt das Kombinationsfeld den ausgewählten Wert auf leer.
// Sample data
string[] firstname = { "John", "Bob", "Cindy", "Mary", "Clyde" };
string[] lastname = { "Melon", "Carter", "Lawrence", "Garp", "Johnson" };
string[] gender = { "Male", "", "Female", "", "Male" };
// Create the combo box column for the datagridview
DataGridViewComboBoxColumn comboCol = new DataGridViewComboBoxColumn();
comboCol.Name = "Gender";
comboCol.HeaderText = "Gender";
comboCol.Items.Add("Male");
comboCol.Items.Add("Female");
// add the combo box column and other columns to the datagridview
dataGridView1.Columns.Add(comboCol);
dataGridView1.Columns.Add("FirstName", "First Name");
dataGridView1.Columns.Add("LastName", "Last Name");
// read in the sample data
for (int counter = 0; counter < 5; counter++)
{
dataGridView1.Rows.Add(gender[counter], firstname[counter], lastname[counter]);
}
Hoffe, das hilft.
Vielen Dank JohnG –