/// <summary> /// Adds a new option. /// </summary> /// <param name="text">Option text.</param> /// <param name="optionName">Internal name.</param> /// <returns>Newly created control.</returns> public virtual LabeledRadioButton AddOption(string text, string optionName) { var lrb = new LabeledRadioButton(this); lrb.Name = optionName; lrb.Text = text; lrb.RadioButton.Checked += OnRadioClicked; lrb.Dock = Pos.Top; lrb.Margin = new Margin(0, 0, 0, 1); // 1 bottom lrb.KeyboardInputEnabled = false; // todo: true? lrb.IsTabable = true; Invalidate(); return(lrb); }
/// <summary> /// Handler for the option change. /// </summary> /// <param name="fromPanel">Event source.</param> protected virtual void OnRadioClicked(Base fromPanel, EventArgs args) { var @checked = fromPanel as RadioButton; foreach (var rb in Children.OfType <LabeledRadioButton>()) // todo: optimize { if (rb.RadioButton == @checked) { mSelected = rb; } else { rb.RadioButton.IsChecked = false; } } OnChanged(mSelected); }