菜单的选项按钮及复选框CheckAndRadioCheck

Code:

using System;
using System.Windows.Forms;
using System.Drawing;

namespace CsDev
{
    class CheckAndRadioCheck : Form
    {
        MenuItem miColor, miFill;
        static void Main()
        {
            Application.Run(new CheckAndRadioCheck());
        }

        CheckAndRadioCheck()
        {
            Text = "Check And Radio Check";
            ResizeRedraw = true;

            string[] astrColor = { "Black", "Blue", "Green", "Cyan", "Red", "Magenta", "Yellow", "White" };
            MenuItem[] ami = new MenuItem[astrColor.Length + 2];
            EventHandler ehColor = new EventHandler(MenuFormatColorOnClick);

            for (int i = 0; i < astrColor.Length; i++)
            {
                ami[i] = new MenuItem(astrColor[i], ehColor);
                ami[i].RadioCheck = true;
            }
            miColor = ami[0];
            miColor.Checked = true;
            miFill = new MenuItem("&Fill", new EventHandler(MenuFormatFillOnClick));
            ami[astrColor.Length] = new MenuItem("-");
            ami[astrColor.Length + 1] = miFill;

            MenuItem mi = new MenuItem("&Format", ami);
            Menu = new MainMenu(new MenuItem[] { mi });
        }

        void MenuFormatColorOnClick(object obj, EventArgs e)
        {
            miColor.Checked = false;
            miColor = (MenuItem)obj;
            miColor.Checked = true;
            Invalidate();
        }

        void MenuFormatFillOnClick(object obj, EventArgs e)
        {
            MenuItem mi = (MenuItem)obj;
            mi.Checked ^= true;
            Invalidate();
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics grph = e.Graphics;

            if (miFill.Checked)
            {
                Brush brush = new SolidBrush(Color.FromName(miColor.Text));
                grph.FillEllipse(brush, 0, 0, ClientSize.Width - 1, ClientSize.Height - 1);
            }
            else
            {
                Pen pen = new Pen(Color.FromName(miColor.Text));
                grph.DrawEllipse(pen, 0, 0, ClientSize.Width - 1, ClientSize.Height - 1);
            }
        }
    }
}

效果图:


说明:Radio控制绘制椭圆的线条颜色,复选按钮控制是否以Radio选项的颜色填充椭圆内部。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值