我借用了他人写的自定义控件,其名称为XP_ProgressBar,直接添加到窗体可以运行,但是若中途想退出(此时XP_ProgressBar进度显示未完),则不能有效退出!因此我想用代码动态添加,可是不行啊,大家看看我的代码错在那里
Dim m_Pbar As XP_ProgressBarPrivate Sub Command1_Click()
.....
    With m_Pbar
      .Left = 120   <---这里出错:提示找不到方法或数据成员
      .Width = 10572
      .Top = 5640
      .Max = 100
      .Min = 0
    End With
.....
End Sub

解决方案 »

  1.   

    你這樣當然不行,m_pbar只是一個變量,又不是窗體上的一個實體.用load吧.
      

  2.   

    Dim m_Pbar As XP_ProgressBar《--这样定义应该是一个对象吧,而不是普通变量,呵呵,我理解不多,请大家指点。
    楼上的,请说明点,怎么让m_Pbar 获得load(XP_ProgressBar)返回值!
      

  3.   

    Dim m_Pbar As XP_ProgressBar《--这样定义应该是一个对象吧,而不是普通变量,呵呵,我理解不多,请大家指点。你理解错误,上面的声明并没有生成对象实例,该用Dim m_Pbar As NEW XP_ProgressBar
      

  4.   

    参考:http://blog.csdn.net/myhgyp/archive/2005/01/13/252309.aspx
      

  5.   

    应该是这样吧:
    Dim m_Pbar As new XP_ProgressBarload m_pbarPrivate Sub Command1_Click().....
        With m_Pbar
          .Left = 120   <---这里出错:提示找不到方法或数据成员
          .Width = 10572
          .Top = 5640
          .Max = 100
          .Min = 0
        End With
    .....
    End Sub
      

  6.   

    我想你只是创建了一个实例,并没有将控件放到某个容器中,所以。left等是没有意义的
    举个例子,如果你要添加一个你自己写的用户控件,要这样做:Option Explicit
    注意这个声明
    Dim ctlExtender As VBControlExtenderPrivate Sub Form_Load()
       Set ctlExtender = Controls.Add("Project1.UserControl1", "MyControl")
       With ctlExtender 
          .Visible = True
          .Top = 1000
          .Left = 1000
       End With
    End Sub
    不过你的控件怎么加,我没有用过也说不好
      

  7.   

    1。 province_(雍昊):
    你理解错误,上面的声明并没有生成对象实例,该用Dim m_Pbar As NEW XP_ProgressBar
    ===========================================================================
    可是这样使用出现“编译错误,无效使用New关键字”提示!2。myhgyp(也许是这样的,信不信由你):参考:http://blog.csdn.net/myhgyp/archive/2005/01/13/252309.aspx
    =============================================================================================
    你提供的是对类的操作!而我的问题是“动态添加自定义控件”。
    若操作有类似之处,仿照处理时运行到“Set Pbar = New XP_ProgressBar”处提示“编译错误,无效使用
    New关键字”。
    3。HELANSHI(贺兰石) :Dim m_Pbar As new XP_ProgressBar
    ======================================================
    问题与province_(雍昊)一致!!4。ch21st(www.blanksoft.com)
    =====================================
    仿照处理仍然出错:
    Dim Pbar As VBControlExtender
    Private Sub Form_Load()
       Set Pbar = Controls.Add("工程1.XP_ProgressBar", "MyXPbar")
       With Pbar 
          .Visible = True
          .Top = 1000
          .Left = 1000
       End With
    End Sub
    呜呜,没有其他办法吗?期待高手解答!!!
      

  8.   

    ch21st(www.blanksoft.com) 的方法应该可行。你再看看Controls.Add的用法
    如果希望添加一个用户控件或任何 ActiveX 控件到您的窗体,必须或者把这个控件添加到“工具箱”,或者把控件的 License 关键字添加到 Licenses 集合中。有关详细信息请参阅“增加方法 (Licenses 集合)”。
      

  9.   

    FmTest.Controls.Add "VB.XP_ProgressBar", "PBar", FmTest '< ---这里出错: 提示"711"错误,无效的类串,查找带ProgId:VB.XP_ProgressBar的对象。
    真急人!!!