none
CollectionEditor得到错误的代码 RRS feed

  • 问题

  • 我定义了一个集合类,想用CollectionEditor对它进行编辑,但是在Form的InitializeComponent()得到了错误的代码

    集合类定义:
    Public Class ColumnsSetup<br/>
    
        Inherits System.Collections.Generic.List(Of ColumnSetup)
    
    End Class
    
    
    指定集合编辑器
     
    <EditorAttribute(GetType(CollectionEditor), GetType(System.Drawing.Design.UITypeEditor))> _
    
        Public Property ColumnsSetup() As ColumnsSetup '定义列设置
    
            Get
    
                Return _ColumnsSetup
    
            End Get
    
            Set(ByVal value As ColumnsSetup)
    
                _ColumnsSetup = value
    
            End Set
    
        End Property
    错误代码
     Private Sub InitializeComponent()
    
            Dim ColumnSetup1 As mybindingSource.ColumnSetup = New mybindingSource.ColumnSetup
    
            Dim ColumnSetup2 As mybindingSource.ColumnSetup = New mybindingSource.ColumnSetup
    
            Dim ColumnSetup3 As mybindingSource.ColumnSetup = New mybindingSource.ColumnSetup
    
    ........
    
    New mybindingSource.ColumnsSetup.Add(ColumnSetup1)'New上有错误
    
    New mybindingSource.ColumnsSetup.Add(ColumnSetup2)'New上有错误
    
    New mybindingSource.ColumnsSetup.Add(ColumnSetup3)'New上有错误
    
    
    
    
    
    

    xulan
    2010年1月27日 9:13

答案

  • 你好!
         你的语法有问题,你这样试试:
    Dim
    ColumnSetup1 As mybindingSource.ColumnSetup = New mybindingSource.ColumnSetup()

    周雪峰
    • 已标记为答案 xulanb 2010年1月28日 3:20
    2010年1月27日 9:36
    版主

全部回复

  • 你好!
         你的语法有问题,你这样试试:
    Dim
    ColumnSetup1 As mybindingSource.ColumnSetup = New mybindingSource.ColumnSetup()

    周雪峰
    • 已标记为答案 xulanb 2010年1月28日 3:20
    2010年1月27日 9:36
    版主
  • 我知道这个语法有问题,
    InitializeComponent()里的代码是自动生成的,我想问的是如何才能让系统自动生成正确的代码,谢谢
    例如:
    Private Sub InitializeComponent()
    
            Dim ColumnSetup1 As mybindingSource.ColumnSetup = New mybindingSource.ColumnSetup
    
            Dim ColumnSetup2 As mybindingSource.ColumnSetup = New mybindingSource.ColumnSetup
    
            Dim ColumnSetup3 As mybindingSource.ColumnSetup = New mybindingSource.ColumnSetup
    
    ........
    
            Me.MyBindingSource1.ColumnsSetup.AddRange(New mybindingSource.ColumnSetup() {ColumnSetup1, ColumnSetup2, ColumnSetup3})
    

    xulan
    2010年1月28日 1:00
  • 终于找到解决办法了
     <EditorAttribute(GetType(CollectionEditor), GetType(System.Drawing.Design.UITypeEditor)), _
        DesignerSerializationVisibility(DesignerSerializationVisibility.Content), _
        MergableProperty(True) _
        > _
        Public Property ColumnsSetup() As ColumnsSetup '定义列设置
            Get
                Return _ColumnsSetup
            End Get
            Set(ByVal value As ColumnsSetup)
                _ColumnsSetup = value
            End Set
        End Property

    这样自动生成的代码就对了
    2010年1月28日 3:19