具体情况是:
  我用VB.NET写了这样一个组件:
imports System
Imports System.Web.UI
Namespace Test   public class tcon : Page
     public lblHome as linkbutton
     public BYN AS Boolean
     public sub ctweb
        if BYN Then
          lblHome.Enabled = true
        else
          lblHome.Enabled = false
        end if
     end sub
   end classEnd NameSpace在另一个web页面上有一个叫lblHome的linkbutton控件,本来用上面的组件来控制它的enabled属性的,但是当我调用上面组件的ctweb方法时,就会出错,但是在用code-behind 技术就可以这样控制。
希高手们帮小弟解决这个问题。

解决方案 »

  1.   

    这样用当然会出错了,lblHome又不是在本控件中,怎么能直接使用。
    或许可以这样:
    Dim p As System.Web.UI.Page
    p = CType(this.NamingContainer, System.Web.UI.Page)
    Dim lblHome As LinkButton = CType(p.FindControl("lblHome"), LinkButton)
    lblHome.Enabled = False
      

  2.   

    不是不行呀,我是把
    imports System
    Imports System.Web.UI
    Namespace Test   public class tcon : Page
         public lblHome as linkbutton
         public BYN AS Boolean
         public sub ctweb
            if BYN Then
              lblHome.Enabled = true
            else
              lblHome.Enabled = false
            end if
         end sub
       end classEnd NameSpace
    编译成dll文件在调用的
      

  3.   

    还有一个办法,传入一个Page对象进去。
      

  4.   

    你这个组件中并没有一个 lblHome的实例,所以会出问题。我觉得应该这样
         public sub ctweb(lblHome as LinkButton)
            if BYN Then
              lblHome.Enabled = true
            else
              lblHome.Enabled = false
            end if
         end sub
      

  5.   

    将整个LinkButton传进去,试试
    protected System.Web.UI.WebControls.LinkButton lbtpublic System.Web.UI.WebControls.LinkButton _lbt
    {
       get {return lbt;}
       set {lbt = value;}
    }
    你可以在子定义的组件中使用lbt,在需要使用这个组件的叶面中传递一个
    LinkButton对象进去