为什么Controls.Find不能使用ToolStripMenuItem?

时间:2015-07-01 12:04:17

标签: c#

我使用以下方法通过控件名称访问控件属性:

var ctrl = frm.Controls.Find("textbox1", true).FirstOrDefault();
ctrl.Enabled = Convert.ToBoolean(ctrlperm.Value.ToString());

并且工作正常,但它似乎与ToolStripMenuItem一起使用,因为当我尝试将它与ToolStripMenuItem一起使用时,我收到错误消息:

  

对象引用未设置为对象的实例

另一个问题是,当我使用此代码时,我真的不知道我正在处理的控件的类型,这意味着它可能是ToolStripMenuItem或任何其他控件,那么是否有通过其名称访问任何控件的统一方式?

2 个答案:

答案 0 :(得分:2)

这是因为ToolStripMenuItem不是Control。可以使用您使用的方法找到继承自Control的每个元素。尝试找到ToolStripMenuItem的父元素,即Control

答案 1 :(得分:0)

响应@Claudio P,如果menuItem没有所有者,那么它就无法控制。