这是我创建的 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/