这是我创建的IF -Else梯形图,用于将第一个可见控件聚焦在表单上。根据要求,任何控件都可以隐藏在表单上,因此我必须找到第一个可见控件并将其聚焦。
if (ddlTranscriptionMethod.Visible)
{
ddlTranscriptionMethod.Focus();
}
else if (ddlSpeechRecognition.Visible)
{
ddlSpeechRecognition.Focus();
}
else if (!SliderControl1.SliderDisable)
{
SliderControl1.Focus();
}
else if (ddlESignature.Visible)
{
ddlESignature.Focus();
}
else
{
if (tblDistributionMethods.Visible)
{
if (chkViaFax.Visible)
{
chkViaFax.Focus();
}
else if (chkViaInterface.Visible)
{
chkViaInterface.Focus();
}
else if (chkViaPrint.Visible)
{
chkViaPrint.Focus();
}
else
{
chkViaSelfService.Focus();
}
}
}
还有其他方法可以做到这一点。我以为使用LINQ会降低性能,因为我必须遍历整个页面集合。我在有母版页的页面上很深。请提出建议。
最佳答案
我觉得你的树好。这肯定看起来像是可以简化的逻辑树,并且您对此有很好的嗅觉。但是,似乎逻辑树反射(reflect)了您的需求。 逻辑实际上就是这个复杂的,这是C#提供给您处理这种情况的条件框架。我认为这是无法改善的。
如果,您有一个应该具有焦点的简单控件列表,并且想将焦点放在列表中的第一个可见控件上,则可以执行以下操作:
(From c in ListOfControls
Where c.visible = true
Select c).First.Focus();
但是,看来您还有一些其他条件,所以这行不通。
关于c# - 如何在C#中减少此IF-Else阶梯,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2600345/