public override void Update() { if (binding != null) { selectedValues = binding.GetValueAsInt(); } else { selectedValues = -1; } if (EnableUndo) { valueChangingProp.Enable(binding); } var v = enums.Select((_, i) => Tuple.Create(_, i)).Where(_ => _.Item1 == selectedValues).FirstOrDefault(); if (Manager.NativeManager.BeginCombo(InternalLabel + id, FieldNames[v.Item2].ToString(), swig.ComboFlags.None)) { for (int i = 0; i < FieldNames.Count; i++) { bool is_selected = (FieldNames[v.Item2] == FieldNames[i]); if (Manager.NativeManager.Selectable(FieldNames[i].ToString(), is_selected, swig.SelectableFlags.None)) { selectedValues = enums[i]; if (EnableUndo) { binding.SetValue(selectedValues); } else { binding.SetValueDirectly(selectedValues); } } if (is_selected) { Manager.NativeManager.SetItemDefaultFocus(); } } Manager.NativeManager.EndCombo(); } if (EnableUndo) { valueChangingProp.Disable(); } }
void Enum_SelectedIndexChanged(object sender, EventArgs e) { if (binding != null) { Writing = true; if (SelectedIndex >= 0) { if (EnableUndo) { binding.SetValue(enums[SelectedIndex]); } else { binding.SetValueDirectly(enums[SelectedIndex]); } } Writing = false; } }