C#中,知道ToolStripButton的名字,如何取得这个对象?

解决方案 »

  1.   


    ToolStripButton ctl=(ToolStripButton)this.Controls.Find("控件名", true)[0];
      

  2.   

    无法将类型“System.Windows.Forms.Control”转换为“System.Windows.Forms.ToolStripButton”不行啊!
      

  3.   

    ToolStripButton tsb = (ToolStripButton)this.Controls.Find("tsbAdd", true)[0];控件名没问题啊,还是有错误。
      

  4.   

    不好意思,刚才的确实错了,因为ToolStripButton并不在ToolStrip类的Controls集合,而在Items集合内.
    下面的方法OK(其中toolStrip1是toolStrip控件的名称codeToolStripButton tsb=(ToolStripButton)toolStrip1.Items.Find("tsbAdd",true)[0];
      

  5.   

    嗯 ,这样的确可以,能不能不用toolStrip1,因为我是在Form_load中检查按钮权限,
    采用上面的方式还要知道ToolStrip1,这会比较麻烦吧?
      

  6.   

    那你得先使用this.Controls.Find方法,将所有的ToolStrip找出来,然后再针对每个ToolStrip,使用Items.Find方法来找        private ToolStripButton findcontrol(string id)
            {
                ToolStripButton result;
                result = null;
                foreach (Control ctl in this.Controls)
                {
                    if (ctl.GetType() == typeof(System.Windows.Forms.ToolStrip))
                    {
                        ToolStrip ts = ctl as ToolStrip;
                        ToolStripItem[] items = ts.Items.Find(id, true);
                        if (items.Length > 0)
                        {
                            result = (ToolStripButton)items[0];
                            return result;
                        }
                    }
                }
                return result;
            }