WinForm的RadioButton使用小技巧

系统 1765 0

 

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

WinForm的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);
        }

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

WinForm的RadioButton使用小技巧


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论