WinForm的RadioButton使用小技巧

摘要:
有时表单中有更多的单选按钮,这些单选按钮通常用作数据检索、业务逻辑和其他操作的条件。例如,如下图所示,如果选择“全部”,则将显示所有符合条件的数据;如果选择“已批准”,则将显示所有合格和已批准的数据……我们的一般处理方法是每个RadioButton控件都有一个CheckedChanged事件。让我们看看如何改进它:我们用相同的事件替换所有RadioButton控件的CheckedChanged事件。如下图所示,代码privatenoidRadioBtn_CheckedChanged{if(!

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

WinForm的RadioButton使用小技巧第1张 

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

WinForm的RadioButton使用小技巧第2张WinForm的RadioButton使用小技巧第3张代码
        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事件用同一个事件替换。 如下图所示,

WinForm的RadioButton使用小技巧第4张 

WinForm的RadioButton使用小技巧第5张WinForm的RadioButton使用小技巧第6张代码

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

        }

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

免责声明:文章转载自《WinForm的RadioButton使用小技巧》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBoot 学集 (第二章) 配置文件linux 系统centos新添加一个硬盘,分区格式化挂载操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Winform开发框架的重要特性总结

Winform开发框架的重要特性总结 从事Winform开发框架的研究和推广,也做了有几个年头了,从最初的项目雏形到目前各种重要特性的加入完善,是经过了很多项目的总结归纳和升华,有些则是根据客户需要或者应用前景的需要进行的完善,整个Winform开发框架具有很好的通用性和借鉴性,本文从该Winform开发框架进行概括总结,力求把各个重要的特性进行一些详细的...

winform程序登陆后关闭登录窗体

用winform做程序的时候,我们一般都是在Program先启动登录窗体,然后登录成功后才创建主窗体,结果这就导致了登录窗体无法关闭 所以如果我们不在Program的程序入口先创建登录窗体的话就能完美实现登录成功后关闭登录窗体的功能了,直接贴代码 usingSystem; usingSystem.Collections.Generic; usingSyst...

winform窗体(五)——布局方式

一、默认布局 ★可以加panel,也可以不加; ★通过鼠标拖动控件的方式,根据自己的想法布局。拖动控件的过程中,会有对齐的线,方便操作; ★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整各个控件大小的工具。 注:分层:右键点击控件。可以选择置于顶层或置于顶层。       锁定控件:当部分布局完成,为了操作失误,把布局好的打乱,可以选中布局...

C# WinForm界面美化--使用IrisSkin实现换肤功能

    WinForm界面使用IrisSkin,可以说做到了一键美化,当然美化的效果仁者见仁智者见智,可以挑选自己喜欢的。     1、IrisSkin下载地址:https://www.cr173.com/soft/69061.html     2、将下载的文件放到Debug下面。     3、新建一个WinForm窗体,命名为Main:      4、...

C# winform 获取标题栏,状态栏,菜单栏的高度

MessageBox.Show("当前窗体标题栏高度"+(this.Height - this.ClientRectangle.Height).ToString());//获得当前窗体标题栏高度 ClientRectangle//获取表示控件的工作区的矩形 MessageBox.Show(SystemInformation.PrimaryMo...

winform知识

控件相关 1.文本框/label高度 文本框Multiline属性,设为true就可以了。改完高度后再将此属性改回来,要不然多行文本框,按回去就去下一行了。 label的改autoSize属性,设为false就可以了。 2.控件中文字居中 TextAlign属性:MiddleCenter 3.颜色属性 直接输入 #xxxx 4.如何去掉button按钮的...