当前位置:编程学习 > C#/ASP.NET >>

小弟刚学习C#,c#怎么单击窗体依次变色,下面是我的源码,不知道哪里出错了,请各位大神看下!


程序效果就是,运行时,窗体开始时白色的,用鼠标点击窗体1次,变一次颜色,依次为,变为红,绿,蓝,我感觉是不是应该声明一个颜色的类,我用if语句来判断第一种是否红色,然后才可以显现其他颜色!

请大侠,在看看源码!颜色的类是怎么声明

using System; 

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms; 


namespace gaibianbeijingse //命名空间为改变背景颜色 

{

    public partial class  Form1 : Form  // class 对象  form 继承       我感觉这里应该在声明一个颜色的类,下面才不会出错,但是又不知道怎么声明!

    {

        public Form1()

        {

            InitializeComponent();

        } 


        private void Form1_Load(object sender, EventArgs e) // 这里什么也没有写,窗体初始时的颜色 

        {

        } 


        private void btn1(object sender, MouseEventArgs e)       //这里btn1 用鼠标点击事件,

           {

            this.BackColor = Color.Red;       // 单击窗体后,变为红色

            if(this.BackColor == Color.Red)   // 到这里说red 不能为颜色。出现错误了!我想用if语句来改变颜色呢,但是if 语句   red 下面就划红色的线条 了, 就出错了

        

            }

        }

    }

 
--------------------编程问答-------------------- 你用你发帖的时间去看看if语句也就明白是怎么回事了
--------------------编程问答-------------------- 哥们用bool flag 来标识,颜色是否改变..然后通过if 切换颜色. --------------------编程问答-------------------- 一个数组加一个标示为够了

Color[] cols = new Color[]{Color.Red,Color.Green,Color.Blue};
int flag = 0;

BtnClick()
{
  if(flag>= cols.Length) flag = 0;
     this.BGColor = cols[flag];
  flag++;
}
--------------------编程问答-------------------- 谢谢,我去试下 --------------------编程问答-------------------- 可能this.BgColor返回的不是颜色 --------------------编程问答--------------------
引用 1 楼 yuefeng_sihu 的回复:
你用你发帖的时间去看看if语句也就明白是怎么回事了
我感觉if语句是对的啊! --------------------编程问答--------------------
引用 5 楼 mowanglijiang 的回复:
可能this.BgColor返回的不是颜色
那是哪里出错了呢! --------------------编程问答-------------------- VS2010中不会报错啊 --------------------编程问答--------------------
引用 3 楼 assky124 的回复:
一个数组加一个标示为够了
C# code?123456789Color[] cols = new Color[]{Color.Red,Color.Green,Color.Blue};int flag = 0; BtnClick(){  if(flag>= cols.Length) flag = 0;     this.BGColor = cols[flag];  fla……

帮忙看下,现在没有出错了,但是不会单机窗口不会出现红色了,直接变成蓝色了,这是为什么呢
下面是源码!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 改变背景色
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btn1(object sender, MouseEventArgs e)
        {
            this.BackColor = Color.Red;
            if (this.BackColor == Color.Red)
            {
                this.BackColor = Color.Blue;
            }
        }

        
    }
}
--------------------编程问答--------------------
 private void button3_Click(object sender, EventArgs e)
        {
            changeColor(this.BackColor);
        }

        private void changeColor(Color col)
        {
            Color newColor;
            newColor = col == Color.Red ? Color.Blue : (col == Color.Blue ? Color.Green : Color.Red);
            setColor(newColor);
            //switch (col.ToString())
            //{
            //    case "Color [Red]":
            //        setColor(Color.Blue);
            //        break;
            //    case "Color [Blue]":
            //        setColor(Color.Green);
            //        break;
            //    default:
            //        setColor(Color.Red);
            //        break;

        }
        private void setColor(Color newColor)
        {
            this.BackColor = newColor;
        }
--------------------编程问答--------------------
引用 3 楼 assky124 的回复:
一个数组加一个标示为够了
C# code?123456789Color[] cols = new Color[]{Color.Red,Color.Green,Color.Blue};int flag = 0; BtnClick(){  if(flag>= cols.Length) flag = 0;     this.BGColor = cols[flag];  fla……


我不是写了么,伪代码而已,稍微修改下就可以了啊。

我觉得你需要打好基础了!
--------------------编程问答--------------------  

  public int flag = 0;
 private void button1_Click(object sender, EventArgs e)
        {


            Color[] cols = new Color[] { Color.Red, Color.Green, Color.Blue };
            
          
               
                this.BackColor = cols[flag];
                flag++;
                if (flag == 3)
                {
                    flag = 0;
                }

         
             
        }

点击按钮  窗体换色按照红色绿色蓝色 一直变换。。希望有帮助 --------------------编程问答--------------------
引用 9 楼 iack00000 的回复:
引用 3 楼 assky124 的回复:
一个数组加一个标示为够了
C# code?123456789Color[] cols = new Color[]{Color.Red,Color.Green,Color.Blue};int flag = 0; BtnClick(){  if(flag>= cols.Length) flag = 0;     this.BGColor = cols[fl……

 当然单击不会变成红色了,因为程序执行的很快,单击后执行this.BackColor = Color.Red;,刚要变成红色,
              执行
              if (this.BackColor == Color.Red)
            {
                this.BackColor = Color.Blue;
            }
所以定格蓝色
--------------------编程问答--------------------

public static Color[] c = { Color.Red, Color.Green, Color.Blue }; //颜色数组,三色就没必要创建类了
        public static int index = 0; //需要用到的数组索引
        private void Form1_MouseClick(object sender, MouseEventArgs e)//窗体单击事件
        {
            if (index == 0)
            {
                this.BackColor = c[index]; //更改颜色,并修改index的值
                index++;
            }
            else if (index == 1)
            {
                this.BackColor = c[index];//同上
                index++;
            }
            else
            {
                this.BackColor = c[index];
                index=0;//恢复默认值,不然数组索引会越界
            }
        }
--------------------编程问答--------------------

private void color() 
        {
            this.BackColor = Color.Transparent;
            if (this.BackColor == Color.Transparent) 
            {
                this.BackColor = Color.Blue;
            }
            else if (this.BackColor == Color.Blue) 
            {
                //红色
            }
            //依次判断吧
        }
--------------------编程问答-------------------- 菜鸟学习。。。。学习中 --------------------编程问答--------------------

        private void btn1(object sender, MouseEventArgs e)
         {
             this.BackColor = Color.Red;
             if (this.BackColor == Color.Red)             {
                 this.BackColor = Color.Blue;
             }
         }
 
        

你在这里断点就知道有没有变为红色了  其实变了红但是下面变为了蓝
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,