单击后如何切换椭圆形状背景色?

时间:2016-03-08 08:37:04

标签: c# visual-studio-2010 color-coding

这就是我的代码,它适用于按钮,但它不能与我的OvalShape一起使用。我需要它用于C#中的Master Mind游戏。椭圆形状应在单击后更改颜色。它应该能够变成6种颜色红色,黄色,蓝色,白色,绿色和紫色。

     private void ovalShape1_4_Click(object sender, EventArgs e)
    {
        Control ctrl = ((Control)sender);
        switch (ctrl.BackColor.Name)
        {
            case "Red":
                ctrl.BackColor = Color.Yellow;
                break;
            case "Black":
                ctrl.BackColor = Color.Green;
                break;
            case "White":
                ctrl.BackColor = Color.Red;
                break;
            case "Yellow":
                ctrl.BackColor = Color.Purple;
                break;
            default:
                ctrl.BackColor = Color.Red;
                break;





using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic.PowerPacks;

namespace Mastermind2
{
    public static class ControlCollectionExtension
    {
        public static IList<OvalShape> ToList(this ShapeCollection aiShapeCollection)
        {
            IList<OvalShape> aoShapes = new List<OvalShape>();

            foreach (OvalShape ctrl in aiShapeCollection)
                aoShapes.Add(ctrl);

            return aoShapes;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

制作公共变量

int index = 0;

之后制作这个逻辑,这可能对你有帮助

 private void ovalShape1_4_Click(object sender, EventArgs e)
{
OvalShape ctrl = ((OvalShape)sender);
        switch (index)
        {
            case 0:
                ctrl.BackColor = Color.Yellow;
                break;
            case 1:
                ctrl.BackColor = Color.Green;
                break;
            case 2:
                ctrl.BackColor = Color.Red;
                break;
            case 3:
                ctrl.BackColor = Color.Purple;
                break;
            default:
                ctrl.BackColor = Color.Red;
                index = 0;
                break;
        }
}

答案 1 :(得分:0)

我的猜测是你没有为OvalShape控件分配Click事件处理程序。

   foreach (OvalShape ctrl in aiShapeCollection)
      ctrl.Click += ovalShape1_4_Click;
      aoShapes.Add(ctrl);