clasificación personalizada e implementación de botones [...] de propertyGrid, etc.
Entiendo tu primera pregunta, pero siento no haber entendido las dos últimas.
La primera pregunta es así
//
// Resumen:
// Ordena los miembros de una colección usando la clasificación predeterminada de la colección (generalmente orden alfabético).
public virtual PropertyDescriptorCollection Sort();
//
// Resumen:
// Utilice las System.Collections especificadas. IComparer ordena los miembros de esta colección.
public virtual PropertyDescriptorCollection Sort(IComparer comparer);
//
// Resumen:
// Para esta colección Clasificación de miembros . Primero se aplica el orden especificado, seguido de la clasificación predeterminada de esta colección, que suele ser el orden alfabético.
public virtual PropertyDescriptorCollection Sort(string[] nombres);
//
// Resumen:
// Para esta colección Clasificación de miembros en . Primero se aplica el orden especificado y luego se ordena utilizando el System.Collections.IComparer especificado.
public virtual PropertyDescriptorCollection Sort(string[] nombres, comparador IComparer);
///
/// Devuelve el tipo especificado por este especificador de tipo Una colección filtrada de descriptores de propiedades para el objeto representado.
///
/// Matriz de atributos utilizada como filtro. Puede ser nulo.
///
/// Un
///
anulación pública PropertyDescriptorCollection GetProperties(Atributo[] atributos)
{
int i = 0 ;
//parameterList son los datos que se mostrarán y que se pasan desde el exterior.
PropertyDescriptor[] newProps = new PropertyDescriptor[parameterList.Count];
foreach (parámetro ConfigParameter en la lista de parámetros)
{
/ / Convierta ConfigParameter, su propio tipo definido, en tipo PropertyDescriptor:
newProps[i++] = new SystemOptionsPropertyDescriptor(parámetro, verdadero, atributos);
}
//Adquirió PropertyDescriptor[] newProps; ahora puede ordenarlo; de lo contrario, se mostrará en el orden original de newProps;
//1. Regresar directamente
PropertyDescriptorCollection tmpPDC = new PropertyDescriptorCollection(newProps);
return tmpPDC;
//2. Orden alfabético predeterminado
PropertyDescriptorCollection tmpPDC = new PropertyDescriptorCollection(newProps);
return tmpPDC.Sort();
//3. El orden de la matriz: sortName es el orden de los atributos y el contenido es el nombre de cada atributo.
string[] sortName = new string[] { "a","b","c","d" };
return tmpPDC.Sort(sortName);
//4. Método de clasificación definido por las reglas del comparador
ParameterListComparer myComp = new ParameterListComparer();//ParameterListComparer: IComparer
return tmpPDC.Sort(myComp) ;
//5. Primero la matriz, luego el comparador
return tmpPDC.Sort(sortName,myComp);
//Utilizo los métodos de datos que son ordenado antes de pasar: es decir, antes de llamar, ordene la lista de parámetros de datos en orden y luego 1. Regrese directamente.
}
// Para el método de clasificación de matrices, puede declarar un evento y el orden de implementación de los atributos se pasa desde el exterior:
cadena de delegado público[] SortEventHandler ();
clase pública CustomTypeDescriptorExtend : CustomTypeDescriptor
{
public SortEventHandler OnSort;
//. ..Otros Código
anulación pública PropertyDescriptorCollection GetProperties(Attribute[] atributos)
{
string[] sortName = OnSort();
PropertyDescriptorCollection tmpPDC = TypeDescriptor.GetProperties(typeof(CustomTypeDescriptorExtend), atributos);
return tmpPDC.Sort(sortName);
}
} p>
//Cuando se usa:
public MyMethod()
{
CustomTypeDescriptorExtend s = new CustomTypeDescriptorExtend();
s. OnSort += nuevo SortEventHandler(SetSortors);
PropertyGrid1.SelectedObject = s;
PropertyGrid1.PropertySort = PropertySort.Categorized;
} p>
cadena pública[] SetSortors()
{
return nueva cadena[] { "B", "A", "C" };
}
Por supuesto que esto no lo escribí yo. Déjame darte el enlace original, jaja
/yangyuhang/blog/item/b2c8e3d3f88eb0dba9ec9add.html
.