同じフォームに存在するすべてのテキストボックスに同じプロパティを与える方法。
foreach (var textbox in this.Controls.OfType<TextBox>())
{
textbox.ContextMenu = new ContextMenu();
}
上記のコードは、テキストボックスがネストされた形式でない場合にのみ機能します。
私のプロジェクトでは、tabcontrolに複数のタブページがあります。したがって、上記のコードを実装することはできません。しかし、私は以下のコードを実装することができます:
foreach (TextBox textbox in this.Controls.OfType<TabControl>().SelectMany(tc => tc.Controls.OfType<TabPage>().SelectMany(page => page.Controls.OfType<TextBox>())))
{
textbox.ContextMenu = new ContextMenu();
}
foreach (var textbox in this.tabCarInsurance.Controls.OfType<TextBox>())
{
textbox.ContextMenu = new ContextMenu();
}
foreach (var textbox in this.tabHomeLoans.Controls.OfType<TextBox>())
{
textbox.ContextMenu = new ContextMenu();
}
foreach (var textbox in this.tabRetirement.Controls.OfType<TextBox>())
{
textbox.ContextMenu = new ContextMenu();
}
ここでは、tabControlごとに実装しています。それでも私は好きではありません(私は世話をするためのより多くのタブページを持っているので)。上記のコードを減らす方法はありますか?
私は以下のコードを試しました:(動作していません)
foreach (var textbox in this.Controls.OfType<TabControl>().OfType<TextBox>())
{
textbox.ContextMenu = new ContextMenu();
}
私は前の質問から上記のコード知識を得ました。
よろしくお願い
します。