private void Button_ValueChanged(object sender, bool value)
        {
            UIRadioButton button = (UIRadioButton)sender;

            if (value)
            {
                SelectedIndex = button.Tag.ToString().ToInt();
            }
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            if (Items.Count == 0)
            {
                return;
            }
            if (Items.Count != buttons.Count)
            {
                ClearButtons();

                for (int i = 0; i < Items.Count; i++)
                {
                    UIRadioButton button = new UIRadioButton
                    {
                        Font   = Font,
                        Parent = this,
                        Tag    = i,
                        Style  = Style
                    };

                    button.ValueChanged += Button_ValueChanged;
                    buttons.Add(button);
                }
            }

            int startX = StartPos.X;
            int startY = TitleTop + StartPos.Y;

            for (int i = 0; i < Items.Count; i++)
            {
                buttons[i].Text = Items[i].ToString();

                int rowIndex    = i / ColumnCount;
                int columnIndex = i % ColumnCount;

                buttons[i].Left = startX + ItemSize.Width * columnIndex + ColumnInterval * columnIndex;
                buttons[i].Top  = startY + ItemSize.Height * rowIndex + RowInterval * rowIndex;
                buttons[i].Show();
            }
        }