我的应用程序中的每个表单上都有此代码,这些表单具有文本框,以防止 ReadOnly 的文本框被标记为:
private void FrmInventory_Load(object sender, EventArgs e)
{
foreach (var txtbx in Controls.OfType<TextBox>())
{
txtbx.TabStop = (!txtbx.ReadOnly);
}
}
将这段代码只放在一个地方会很好,但我该怎么做,因为每次调用“外部”方法时,它都会触及调用表单上的 TextBoxes,这闻起来有点腥。是一种扩展方法,例如:
public static bool TextboxIsReadOnly(this TextBox txtbx)
{
return txtbx.ReadOnly;
}
...然后这样称呼它:
foreach (var txtbx in Controls.OfType<TextBox>())
{
txtbx.TabStop = TextboxIsReadOnly(txtbx);
}
?
这似乎没有多大价值——我仍然必须将大部分代码放在每种形式中,就像现在的情况一样。创建一个既是 ReadOnly 又是 TabStop = false 的自定义文本框似乎有点矫枉过正......
有没有办法让每个包含 TextBox 的表单都执行此逻辑,而无需在整个项目中复制代码?