2
私は以下のようにControl
にタブ順序に第1の制御を取得するために拡張メソッドを書く:コントロールのタブ順序で最初のコントロールを見つけるには?
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 –
多くのおかげでローマ、私は今日新しいことを学びます:) –