예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }