问题:用按钮来控制图的显示
 
 
       一个按钮一张图
       private void Button1_Click(object sender, EventArgs e)
        
{
            
this.pic1.Visible = true;
        }

 
        .....
 
      
       四个按钮四张图
       
private void Button1_Click(object sender, EventArgs e)
        
{
            
this.pic1.Visible = true;
            
this.pic2.Visible = false;
            
this.pic3.Visible = false;
            
this.pic4.Visible = false;
        }

     
        
private void Button2_Click(object sender, EventArgs e)
        
{
            
this.pic1.Visible = false;
            
this.pic2.Visible = true;
            
this.pic3.Visible = false;
            
this.pic4.Visible = false;
        }

        
private void Button3_Click(object sender, EventArgs e)
        
{
            
this.pic1.Visible = false;
            
this.pic2.Visible = false;
            
this.pic3.Visible = true;
            
this.pic4.Visible = false;
        }

        
private void Button4_Click(object sender, EventArgs e)
        
{
            
this.pic1.Visible = false;
            
this.tips2.Visible = false;
            
this.pic3.Visible = false;
            
this.pic4.Visible = true;
        }

 
       ......
 
       100个按钮100张图
       Www我和你拼了!
       
private void Button1_Click(object sender, EventArgs e)
        
{
            
this.pic1.Visible = true;
            
this.pic2.Visible = false;
            
this.pic3.Visible = false;
            
this.pic4.Visible = false;
            
this.pic5.Visible = false;
           
        }

       
private void Button2_Click(object sender, EventArgs e)
        
{
            
this.pic1.Visible = false;
            
this.pic2.Visible = true;
            
this.pic3.Visible = false;
            
this.pic4.Visible = false;
            
        }

        累并快乐着
 
不要以为上面是说笑而已,我看很多人都是这么干的!
 
同学,你有什么好的做法吗?

思路1:各家自扫门前雪,不管人家瓦上霜。

   
public class MyBotton : System.Windows.Forms.Button
    
{
        
/// <summary>
        
/// the shared showed pic
        
/// </summary>

        private static System.Windows.Forms.PictureBox _picShowed = null;
        
private static System.Windows.Forms.PictureBox PicShowed
        
{
            
set
            
{
                
if (_picShowed != null)
                
{
                    
//set to not show
                    _picShowed.Visible = false;
                }

                
//set the goloble value
                _picShowed = value;
                
if (_picShowed != null)
                
{
                    
//set to show
                    _picShowed.Visible  = true;
                }

                
            }

        }


        
/// <summary>
        
/// my own pic
        
/// </summary>

        private System.Windows.Forms.PictureBox _myPic = null;
        
public System.Windows.Forms.PictureBox MyPic
        
{
            
get
            
{
                
return _myPic;
            }

            
set
            
{
                _myPic 
= value;
            }

        }


        
/// <summary>
        
/// override click event
        
/// </summary>
        
/// <param name="e"></param>

        protected override void OnClick(EventArgs e)
        
{
            PicShowed 
= _myPic;
            
base.OnClick(e);
        }

    }
posted on 2007-06-22 12:04 MasterCai 阅读(1061) 评论(9)  编辑 收藏 所属分类: 设计模式

  回复  引用  查看    
2007-06-22 12:13 | 航天奇侠      
恩,我觉得第一种方法简单。copy一下就可以了。
  回复  引用  查看    
2007-06-22 12:31 | henry      
这情况我想到的是接口...
  回复  引用  查看    
2007-06-22 12:54 | 晓木      
好的方法没想到,但是缩减一些代码还是可以的,如下:

先写一方法:
private void SetAllFalse()
{
// 其中将100个图片的Visible都设为false
}

然后点击每个按钮时,都先调此函数,再设定其对应的图片可见性为true,如此一来,代码将大大减少....
  回复  引用    
2007-06-22 13:08 | test [未注册用户]
给没个图片设置一个可见性依赖项属性,然后循环设置,循环设置,。。。。
  回复  引用  查看    
2007-06-22 13:36 | Jeffrey Zhao      
不过我第一反应是,为什么不用数组呢?
  回复  引用    
2007-06-22 14:32 | awcyy [未注册用户]
同意楼上的,一个图片数组,一个按钮数组,一个变量记录当前显示的图片下标,然后隐藏当前的图片,显示对应的图片......
  回复  引用    
2007-06-22 16:08 | ruanyp [未注册用户]
上面那个类,类名应该是MyButton,不是MyBotton吧
  回复  引用  查看    
2007-06-22 17:16 | 沐枫      
这个没有答案,看具体的应用和要求。

不过,楼主就没有发现每个按钮或其它的控件都有一个叫Tag的属性吗?
用这个属性可以干很多事的。
  回复  引用    
2007-06-25 18:02 | 江千帆 [未注册用户]
如果是网页的话,每次点击后修改picture控件的source比较方便,而且节约内存。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: