我用vb写了一个关于照相机的控件,在userControl中添加了一个照相机的控件Rye1和一个设置按钮,想通过设置按钮打开另外一个Form(SetRyeForm),然后再SetRyeForm中设置Rye1的属性,可是无论如何也不认userControl中的Rye1控件,好像不能直接userControl.Rye1这样的引用,请问我该如何处理....
另外当关闭SetRyeForm的时候我想返回一个Result = OK 或 Cancel,在vb中好像没有这种方式,怎么返回一个vbOK或vbCancel这样的值呢,(不能用msgBox,我还要在这个Form上添加一些东西呢!)....

解决方案 »

  1.   

    第一个问题没看懂。
    第二个问题:FORM有一个TAG属性,可以随意设置数值。
      

  2.   

    其实很简单,你提的这两个问题,都可通过统一方式解决,即通过SetRyeForm窗体提供公共属性
    来解决。
    例如:在SetRyeForm中定义OKClicked、
    Option Explicit
    Private m_OKClicked As Boolean '表示是否点击OK
    Private m_RetName As String '表示返回给控件的设置值,在这里仅仅是举例返回以字符串
    Public Property Get OKClicked() As Boolean
        OKClicked = m_OKClicked
    End Property
    Public Property Get RetName() As String
        RetName = m_RetName 
    End Property
    Private Sub cmdCancel_Click()
        Unload Me
    End Sub
    Private Sub cmdOK_Click()
    ......
        m_OKClicked = True
        Unload Me
    End Sub
    Private Sub Form_Load()
        m_OKClicked = False
    End Sub然后在控件某过程脚本中调用该Form
    dim f as New SetRyeForm
    f.Show vbModal
    if f.OKCLicked then '如果点击了OK
    控件.某字符串属性=f.RetName
    else
    end if
      

  3.   

    在你的控件里面增加这个属性,这样你就可以在外部使用他!
    Public Property Get Rye() As Object
        Set Rye = Rye1
    End Property