在Form中添加一个PictureBox和button。设置flag=flase,当点击button时,flag=truePaint的方法onPaint中如果flag==true,则将picturebox的bgColor设为黑色。问题来了,当点击button后,将不会看到bg的变化,直到鼠标移动位置,这是为什么?怎么能实时看到变化呢??

解决方案 »

  1.   

    调用控件的update()和Refresh()方法。
      

  2.   

    当点击button后你需要强制窗体刷新才行。
      

  3.   

    picturebox 冒看见有flag,picturebox.image倒是有,但是是只读的。你咋样设成false和true啊
      

  4.   

    flag是我自己定义的,只不过是一个判定改变的条件。update和refresh能不能讲的具体点 private void OnPaint(object sender, PaintEventArgs e)
            {
                if (flag)
                {
                    this.pictureBox1.BackColor = Color.Black;
                    flag = false;
                }
               
            }        private void button1_Click(object sender, EventArgs e)
            {
                flag = true;
            }
      

  5.   

    private void button1_Click(object sender, EventArgs e)
            {
                flag = true;
                OnPaint() ; 
            }
            private void OnPaint()
            {
                if (flag)
                {
                    this.pictureBox1.BackColor = Color.Black;
                    flag = false;               
                    
                }        }
      

  6.   

    this.pictureBox1.Update
    this.pictureBox1.Refresh
      

  7.   

    功能是实现了,可上面只是我举的简单例子,事实上我是需要不断重画来完成功能的。最好是系统的Paint方法自动触发。谢谢哦。那个强制窗体刷新怎么做呢
      

  8.   


     private void OnPaint(object sender, PaintEventArgs e)
            {
                if (flag)
                {
                   
                    this.pictureBox1.BackColor = Color.Black;
                    this.pictureBox1.Update();
                    this.pictureBox1.Refresh();
                    flag = false;
                }
            }
    如此貌似没反应,还是需要离开button才行。
      

  9.   

    重写PictureBox.BackColor属性.
    在set的时候强制刷新
      

  10.   

    问题解决了,是用Refresh方法完成,注意位置 private void OnPaint(object sender, PaintEventArgs e)
            {
                if (flag)
                {
                   
                    this.pictureBox1.BackColor = Color.Black;
                    
                    flag = false;
                }
            }        private void button1_Click(object sender, EventArgs e)
            {
                flag = true;
                this.pictureBox1.Refresh();  
            }