Digamos que tengo una propiedad que deseo que se muestre en un DataGridView, pero no cuando se muestra el mismo objeto en un PropertyGrid. Sé que puedo usar [Browsable(false)]
, pero eso lo oculta en ambas vistas. También puedo hacer un gridView.Columns["blah"].Visible = false;
, pero esto es lo contrario de lo que quiero, ya que se esconde en DataGridView pero no en PropertyGrid. ¿Hay alguna forma de hacer el reverso? (En lugar de crear una DataTable completamente nueva para contener los mismos datos menos un campo, y volver a enlazar todo a eso en su lugar, esa es realmente una forma sencilla de hacer las cosas). Alternativamente, podría vivir con una solución que agrega una columna al DataGridView eso no está presente en la clase real.¿Hace una propiedad visible en DataGridView pero NO en PropertyGrid?
Respuesta
es posible solucionar este problema utilizando la propiedad BrowsableAttributes de un PropertyGrid. En primer lugar, crear un nuevo atributo de la siguiente manera:
public class PropertyGridBrowsableAttribute : Attribute
{
private bool browsable;
public PropertyGridBrowsableAttribute(bool browsable){
this.browsable = browsable;
}
}
A continuación, agregue este atributo para todas aquellas propiedades que desea que se muestra en su PropertyGrid:
[DisplayName("First Name"), Category("Names"), PropertyGridBrowsable(true)]
public string FirstName {
get { return ... }
set { ... }
}
A continuación, establezca la propiedad BrowsableAttributes como esto:
myPropertyGrid.BrowsableAttributes = new AttributeCollection(
new Attribute[] { new PropertyGridBrowsableAttribute(true) });
Esto solo mostrará las propiedades atribuidas en la cuadrícula de su propiedad y DataGridView todavía puede acceder a todas las propiedades con solo un poco más de esfuerzo de codificación.
Todavía me iría con Tergiver y llamar a este comportamiento un error, ya que la documentación del atributo de navegación indica claramente su uso para ventanas de propiedades solamente.
(crédito va a usuario "Maro" en http://www.mycsharp.de/wbb2/thread.php?postid=234565)
Bueno, pasaron 3 meses desde la última vez que toqué este proyecto, y algunas partes relacionadas con esto fueron completamente refactorizadas, así que no puedo probar esto nunca más, pero voy a seguir adelante y acepto esta respuesta de todos modos, porque es el único que tengo, y es _looks_ válido ... –
Me encontré con esto hace unos días, teniendo el mismo problema. Definitivamente funciona como un encanto! Pero es muy interesante ver que esto parece haber sido tocado solo muy pocas veces y que SOLO UNA persona ha encontrado una solución ... Bueno, ahora también está disponible en inglés. – Sebastian
- 1. PropertyGrid - ¿Nombres de propiedad personalizados?
- 2. DataGridView: ¿qué hace AllowUserToAddRows?
- 3. C# UserControl Propiedad visible que no cambia
- 4. Cambiar el valor del elemento de propiedad en PropertyGrid
- 5. Propiedad de solo lectura PropertyGrid en el nivel de objeto
- 6. Winforms PropertyGrid - propiedades no editables
- 7. QML animaciones propiedad visible cambia
- 8. UINavigationController Botón Atrás no visible, pero funciona
- 9. C# UserControl Propiedad visible
- 10. C# Ocultar una propiedad en datagridview con fuente de datos
- 11. .is jQuery ("Visible") funciona en Firefox, pero no Chrome
- 12. Aplicación para Android publicada, pero no visible en Google Play
- 13. TypeConverter en propertygrid solo se convierte de cadena, no en
- 14. La propiedad visible de PictureBox no funciona ... ayuda
- 15. Actualizar un PropertyGrid
- 16. ¿PropertyGrid no nota las propiedades cambiadas en el código?
- 17. Implementando subcampos en un PropertyGrid
- 18. Alternativas PropertyGrid
- 19. LaTeX: Cite, pero no hace referencia a
- 20. En PowerShell Form.Show() no funciona bien, pero Form.ShowDialog() hace
- 21. InPlaceBitmapMetadataWriter.TrySave() devuelve verdadero pero no hace nada
- 22. C#/winforms: la mejor forma de enlazar una propiedad propertygrid y una System.Data.DataRow
- 23. Usando Xceed PropertyGrid
- 24. initWithCoder: no visible en NSObject?
- 25. Recursos ubicados en un paquete separado visible en IB, pero no en el tiempo de ejecución
- 26. ¿Qué hace la propiedad ShadowCopyFiles en appdomain?
- 27. Usar un diccionario en una propiedad cuadrícula
- 28. Configuración de una ventana XAML siempre en la parte superior (pero no en la propiedad TopMost)
- 29. DataGridView Autosize pero restringe el tamaño máximo de columna
- 30. jQuery: no (: en primer lugar) no funciona en IE8, pero lo hace en FF y Chrome
Voy a aceptar ellos cuando en realidad responder a mis preguntas. La mitad de mis preguntas apenas tienen puntos de vista, y mucho menos buenas respuestas. –
Llamo a esto un error. 'Browsable' especifica que determina la visibilidad de un miembro en una ventana de propiedades. Esto no tiene nada que ver con un DGV. Podría abrir un problema de conexión, pero las probabilidades de que lo solucionen son exactamente cero. Una solución sin duda rompería el código existente. Creo que no tienes suerte aquí. – Tergiver
Maldita sea. Por supuesto, podrían agregar un nuevo decorador en lugar de intentar y corregir el navegador, pero todavía apesta que no hay forma de hacerlo. Uno pensaría que no sería una petición tan poco común ... –