with values comboboxitem and c# debugging combobox

c# - values - comboboxitem value wpf



C#Combo Box Only Sets en Debug (1)

He estado escribiendo una aplicación en C # (VS Express 2015) y tengo un cuadro combinado que quiero rellenar previamente con un valor guardado. Parece que no puedo obtener el combobox para tomar el valor que trato de configurar. Creé un nuevo proyecto solo para demostrar este error.

El código principal está abajo. Otro archivo declara tableLayoutPanel. La función drawComboBox debería agregar un cuadro combinado al panel con la opción y la fila seleccionadas.

public Form1() { InitializeComponent(); drawComboBox(Options.Blue, 0); } public enum Options { Unset, Blue, Yellow, Red }; private void drawComboBox(Options SelectedOption, int row) { System.Windows.Forms.ComboBox colorCombo = new System.Windows.Forms.ComboBox(); colorCombo.DataSource = Enum.GetValues(typeof(Options)); colorCombo.Name = "colorCombo"; this.tableLayoutPanel1.Controls.Add(colorCombo, 0, row); colorCombo.SelectedItem = Options.Yellow; }

La parte más extraña es si ejecuto el programa en modo de depuración normal o un solo paso a través de él, el cuadro combinado siempre mostrará "Unset", pero si rompo antes de que se establezca el color y abra el elemento colorCombo en la ventana de depuración de Locals, paso esto, se establecerá correctamente. Esto hace que sea más que difícil saber qué está sucediendo dado que al analizar el problema en el depurador se resuelve.

Agradecería mucho cualquier idea, gracias.


No estoy seguro de por qué sucede esto, pero puedo decirte cómo solucionarlo.

por favor, cambie la secuencia de pasos en su función de dibujar de esta manera y funcionará bien.

private void drawComboBox(Options SelectedOption, int row) { System.Windows.Forms.ComboBox colorCombo = new System.Windows.Forms.ComboBox(); colorCombo.Name = "colorCombo"; this.tableLayoutPanel1.Controls.Add(colorCombo, 0, row); colorCombo.DataSource = Enum.GetValues(typeof(Options)); colorCombo.SelectedItem = Options.Yellow; }

Parece que depende de la secuencia de estas 2 líneas de código

Esta combinación da "unset"

colorCombo.DataSource = Enum.GetValues(typeof(Options)); this.tableLayoutPanel1.Controls.Add(colorCombo, 0, row);

si lo revierte, funciona

this.tableLayoutPanel1.Controls.Add(colorCombo, 0, row); colorCombo.DataSource = Enum.GetValues(typeof(Options));