2
我寫一個擴展方法來獲取選項卡中的第一控制爲了在Control
如下:如何在控件的Tab鍵順序中找到第一個控件?
public static void FirstControlFocus(this Control ctl)
{
ctl.Controls.OfType<Control>().Where(c => c.TabIndex == 0).FirstOrDefault().Focus();
}
的問題是有時候可能沒有與TabOrder==0
沒有現有的控制(例如開發人員刪除!在設計模式下使用Taborder==0
進行控制),這會導致運行時出錯。
我這段代碼解決這個問題:
public static void FirstControlFocus(this Control ctl)
{
if (ctl.Controls.OfType<Control>().Any(c => c.TabIndex == 0))
ctl.Controls.OfType<Control>().Where(c => c.TabIndex == 0).FirstOrDefault().Focus();
else if (ctl.Controls.OfType<Control>().Any(c => c.TabIndex == 1))
ctl.Controls.OfType<Control>().Where(c => c.TabIndex == 1).FirstOrDefault().Focus();
else if (ctl.Controls.OfType<Control>().Any(c => c.TabIndex == 2))
ctl.Controls.OfType<Control>().Where(c => c.TabIndex == 2).FirstOrDefault().Focus();
else if (ctl.Controls.OfType<Control>().Any(c => c.TabIndex == 3))
ctl.Controls.OfType<Control>().Where(c => c.TabIndex == 3).FirstOrDefault().Focus();
}
但我認爲這不是最好的方式,任何人都可以提出一個更好的方式來處理這個問題?提前致謝。
'FirstOrDefault()'後面的'?'是什麼? –
@combo_ci,看到這裏 - https://msdn.microsoft.com/en-us/magazine/dn802602.aspx –
非常感謝羅姆人,我今天學到了新東西:) –