zoukankan      html  css  js  c++  java
  • WinForm的RadioButton使用小技巧

    有时候在一个窗体中有比较多的RadioButton,它们往往是作为取数据、业务逻辑等操作的条件。例如下图例子所示:

     

    用户选择“全部”则会带出全部符合条件数据、选择了“已审核”则会取出全部符合条件的已经审核过后的数据.......我们一般的处理方法是每个RadioButton控件有一个CheckedChanged事件。如下面代码所示

    代码
            private void rdAll_CheckedChanged(object sender, EventArgs e)
            {
                
    if (rdAll.Checked)
                {
                    
    this.gvData.DataSource = GetDataSource("ALL");
                }
            }

            
    private void rdAudit_CheckedChanged(object sender, EventArgs e)
            {
                
    if (rdAudit.Checked)
                {
                    
    this.gvData.DataSource = GetDataSource("Audit");
                }
            }

            
    private void rdNotAudit_CheckedChanged(object sender, EventArgs e)
            {
                
    if (rdNotAudit.Checked)
                {
                    
    this.gvData.DataSource = GetDataSource("NotAudit");
                }
            }

            
    private void rdBilled_CheckedChanged(object sender, EventArgs e)
            {
                
    if (rdBilled.Checked)
                {
                    
    this.gvData.DataSource = GetDataSource("Bill");
                }
            }

            
    private void rdUnBill_CheckedChanged(object sender, EventArgs e)
            {
                
    if (rdUnBill.Checked)
                {
                    
    this.gvData.DataSource = GetDataSource("UnBill");
                }
            }

    当窗体的RadioButton控件比价多时,那么放眼望去,代码里面到处都是CheckedChanged事件、简直有如洪水泛滥。呵呵

    其实我们可以委托来改进代码、这样可以让代码看起来简洁、逻辑清晰、代码量大量减少(当然这个例子不能够证明)。下面看看是如何改进的吧:

         我们把所有RadioButton控件的CheckedChanged事件用同一个事件替换。 如下图所示,

     

    代码

            
    private void RadioBtn_CheckedChanged(object sender, EventArgs e)
            {
                
    if (!((RadioButton)sender).Checked) return;

                
    string filterValue = string.Empty;
                
    switch (((RadioButton)sender).Tag.ToString())
                {
                    
    case "ALL":
                        filterValue 
    = "ALL";
                        
    break;
                    
    case "Audit":
                        filterValue 
    = "Audit";
                        
    break;
                    
    case "NotAudit":
                        filterValue 
    = "NotAudit";
                        
    break;
                    
    case "Bill":
                        filterValue 
    = "Bill";
                        
    break;
                    
    case "UnBill":
                        filterValue 
    = "UnBill";
                        
    break;
                }
                
    this.gvData.DataSource = GetDataSource(filterValue);

            }

    这样处理那么就可以共用许多相同的代码(这个简单的例子没有体现)。让代码界面简明清晰不少! 

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    你不会Python这几个库,不要说你会爬虫
    如何用Python破解验证码,适合新手练手
    2020最新Python入门笔记
    10个超有趣的Python项目,你会哪个?
    Python编程必学规范【新手必学】
    你对Python变量理解到位了没有,80%的人都不知道
    这个男人让你的python爬虫开发效率提升8倍
    Python抖音机器人,论如何在抖音上找到漂亮小姐姐?
    在Python中实现函数重载,60%的人都不会
    2020十大Python面试题,你会几个?
  • 原文地址:https://www.cnblogs.com/kerrycode/p/1661429.html
Copyright © 2011-2022 走看看