none
PropertyGrid Collection DataTables, mostrar TableName en la parte izquierda. RRS feed

  • Pregunta

  • Hola:

    Si en un PropertyGrid, tengo una colección de DataTables, me muestra lo siguiente:

    

    Me gustaría poner el la parte izquierda (debajo de Miembros:) el TableName, no el nombre de la clase.

    Si es algo genérico mejor, porque también me gustaría hacerlo para DataColumns y/o cualquier otra colección mostrada en un PropertyGrid.

    Un saludo



    • Editado LG DES viernes, 21 de octubre de 2016 10:20
    viernes, 21 de octubre de 2016 10:18

Respuestas

  • Deriva tu propio editor de colecciones

    Imports System.ComponentModel
    Imports System.ComponentModel.Design
    Imports System.Drawing.Design
    
    Public Class Form1
        <Editor(GetType(MiEditor), GetType(UITypeEditor))>
        <DisplayName("Tablas")>
        Public Property Tablas() As List(Of DataTable)
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            Dim lista As New List(Of DataTable)
            lista.Add(New DataTable("pepe"))
            lista.Add(New DataTable("josé"))
    
            Tablas = lista
            PropertyGrid1.SelectedObject = Me
    
        End Sub
    End Class
    
    Class MiEditor
        Inherits CollectionEditor
    
        Public Sub New(type As Type)
            MyBase.New(type)
        End Sub
    
        Protected Overrides Function GetDisplayText(value As Object) As String
            Return MyBase.GetDisplayText(DirectCast(value, DataTable).TableName)
        End Function
    End Class


    • Editado walter_5 viernes, 21 de octubre de 2016 13:01
    • Marcado como respuesta LG DES lunes, 24 de octubre de 2016 8:49
    viernes, 21 de octubre de 2016 13:00

Todas las respuestas

  • Deriva tu propio editor de colecciones

    Imports System.ComponentModel
    Imports System.ComponentModel.Design
    Imports System.Drawing.Design
    
    Public Class Form1
        <Editor(GetType(MiEditor), GetType(UITypeEditor))>
        <DisplayName("Tablas")>
        Public Property Tablas() As List(Of DataTable)
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            Dim lista As New List(Of DataTable)
            lista.Add(New DataTable("pepe"))
            lista.Add(New DataTable("josé"))
    
            Tablas = lista
            PropertyGrid1.SelectedObject = Me
    
        End Sub
    End Class
    
    Class MiEditor
        Inherits CollectionEditor
    
        Public Sub New(type As Type)
            MyBase.New(type)
        End Sub
    
        Protected Overrides Function GetDisplayText(value As Object) As String
            Return MyBase.GetDisplayText(DirectCast(value, DataTable).TableName)
        End Function
    End Class


    • Editado walter_5 viernes, 21 de octubre de 2016 13:01
    • Marcado como respuesta LG DES lunes, 24 de octubre de 2016 8:49
    viernes, 21 de octubre de 2016 13:00
  • Hola:

    Es necesario añadir la referencia a System.Design, sino no funciona y tampoco 'sugiere' cual es la referencia a añadir. Tengo otra pregunta similar, he creado otro hilo para dar este por cerrado, gracias:

    https://social.msdn.microsoft.com/Forums/es-ES/bba2a9b7-ca54-48c1-af58-e61968338f07/propertygrid-array-datacolumns-mostrar-nombre?forum=vbes

    Un saludo


    • Editado LG DES lunes, 24 de octubre de 2016 12:19
    lunes, 24 de octubre de 2016 12:09