在您的代碼中,編譯器認爲您找到的對象是Control
,並且不知道它是什麼類型的控件。你需要告訴它,它是什麼樣的控制,你可以通過它強制轉換爲文本做到這一點:
((TextBox)item).ReadOnly = false;
不過,也有這樣做的更好的方法。您的代碼只會查看頂級控件,並且如果您的表單上有容器控件,它將不會遞歸搜索這些以查找其他文本框。遞歸方法做,這是如下:
public static IEnumerable<T> GetControlsOfType<T>(Control root)
where T : Control
{
var t = root as T;
if (t != null)
yield return t;
var container = root as ContainerControl;
if (container != null)
foreach (Control c in container.Controls)
foreach (var i in GetControlsOfType<T>(c))
yield return i;
}
這是一些代碼,我從here了。它允許你做這樣的事情:
foreach (var textBox in GetControlsOfType<TextBox>(theForm))
{
textBox.ReadOnly = false;
}
_「它不工作」 _ - 甚至不是接近,其中一個具體足夠問題陳述。請修復您的問題,以便更清楚。提供一個好的[mcve],可以可靠地再現你遇到的任何問題,並且精確詳細地描述這個問題。解釋你具體遇到什麼困難。 –
試試這個:'(item as TextBox).ReadOnly = false;' – ja72