C# 点击后如何切换椭圆形背景色?

C# 点击后如何切换椭圆形背景色?,c#,visual-studio-2010,color-coding,C#,Visual Studio 2010,Color Coding,这就是我的代码,它与一个按钮一起工作,但与我的椭圆形不起作用。我需要它来做C#中的主脑游戏。椭圆形应该在单击后更改颜色。它应该可以变成6种颜色:红色、黄色、蓝色、白色、绿色和紫色 private void ovalShape1_4_Click(object sender, EventArgs e) { Control ctrl = ((Control)sender); switch (ctrl.BackColor.Name) {

这就是我的代码,它与一个按钮一起工作,但与我的椭圆形不起作用。我需要它来做C#中的主脑游戏。椭圆形应该在单击后更改颜色。它应该可以变成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;
        }
    }
}
private void ovalShape1\u 4\u单击(对象发送方,事件参数e)
{
控件ctrl=((控件)发送方);
开关(ctrl.BackColor.Name)
{
案例“红色”:
ctrl.BackColor=Color.Yellow;
打破
案例“黑色”:
ctrl.BackColor=Color.Green;
打破
“白色”案例:
ctrl.BackColor=Color.Red;
打破
案例“黄色”:
ctrl.BackColor=Color.Purple;
打破
违约:
ctrl.BackColor=Color.Red;
打破
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Windows.Forms;
使用Microsoft.VisualBasic.PowerPacks;
名称空间策划2
{
公共静态类ControlCollectionExtension
{
公共静态IList ToList(此形状集合aiShapeCollection)
{
IList aoShapes=新列表();
foreach(AISHAPECOLECTION中的椭圆形ctrl)
aoShapes.Add(ctrl);
返回形状;
}
}
}
公开变量

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;
        }
}

我猜您没有为OvalShape控件分配单击事件处理程序

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

是的,正是1次单击=例如红色,第二次单击=黄色…等等,您的代码会显示您将处理程序添加到形状的位置。您可以共享ovalshape类或controlBackColor吗?它不会执行您认为的操作。改为使用FillColor。这需要将发件人强制转换为ovalshape。除非单击事件也更改了
index
的值。由于形状控件有多个实例,因此需要定义多个
index
变量。我相信OP正在尝试使用控件的颜色属性来确定下一个应该是什么。是的!你是对的,这不适用于多个卵形。