我该如何优化这段代码?我不喜欢有案例陈述,有没有办法可以改进这段代码?
protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e)
{
string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower();
switch (selVal)
{
case "date":
pnlDate.Visible = true;
pnlSubject.Visible = false;
pnlofficer.Visible = false;
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = false;
break;
case "subject":
pnlDate.Visible = false;
pnlSubject.Visible = true;
pnlofficer.Visible = false;
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = false;
break;
case "officer":
pnlDate.Visible = false;
pnlSubject.Visible = false;
pnlofficer.Visible = true;
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = false;
break;
case "status":
pnlDate.Visible = false;
pnlSubject.Visible = false;
pnlofficer.Visible = false;
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = true;
break;
default:
pnlDate.Visible = false;
pnlSubject.Visible = false;
pnlofficer.Visible = false;
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = false;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
djd*_*d87 32
很容易.根据案例选项,您只能看到一个项目可见,因此只需按如下方式设置可见性:
pnlDate.Visible = (selVal == "date");
pnlSubject.Visible = (selVal == "subject");
pnlofficer.Visible = (selVal == "officer");
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = (selVal == "status");
Run Code Online (Sandbox Code Playgroud)
这比设置所有内容更好visible = false;,然后只显示您需要的项目,因为它只包含6行代码用于实际可见性设置.
其他方式:
// set everything to false
Dictionary<string, type> d = new Dictionary<string, type>()
{
{"date", pnlDate},
{"subject", plnSubject},
{"officer", plnOfficer},
{"status", plnStatus}
};
d[selVal].Visible = true;
Run Code Online (Sandbox Code Playgroud)
小智 5
protected void ddlFilterResultBy_SelectedIndexChanged(object sender, EventArgs e)
{
string selVal = ddlFilterResultBy.SelectedValue.ToString().ToLower();
pnlDate.Visible = false;
pnlSubject.Visible = false;
pnlofficer.Visible = false;
pnlCIA.Visible = false;
pnlMedia.Visible = false;
pnlStatus.Visible = false;
switch (selVal)
{
case "date":
pnlDate.Visible = true;
break;
case "subject":
pnlSubject.Visible = true;
break;
case "officer":
pnlofficer.Visible = true;
break;
case "status":
pnlStatus.Visible = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)