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 utilizando la clasificación predeterminada de la colección (normalmente 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);
/// lt; resumen
/// Devuelve este especificador de tipo A colección filtrada de descriptores de propiedades para el objeto representado.
/// lt;/summarygt;
/// lt;param name="attributes"gt;Matriz de atributos utilizada como filtro. Puede ser nulo. lt;/paramgt;
/// lt;returnsgt;
/// A lt;see cref="T:System.ComponentModel.PropertyDescriptorCollection"gt;lt;/seegt ; Contiene descripciones de propiedades del objeto representado por este especificador de tipo. El valor predeterminado es /// lt;/returnsgt; 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 se puede ordenar; 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. cadena[] sortName = nueva cadena[] { "a", "b", "c", "d" }; return tmpPDC.Sort(sortName); /p> //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 = PropertyGrid1.PropertySort = PropertySort.Categorized; > cadena pública[] SetSortors() { return nueva cadena[] { "B", "A", "C" }; p> } Por supuesto que esto no lo escribí yo, déjame darte el enlace original, jaja /yangyuhang/blog/item/b2c8e3d3f88eb0dba9ec9add.html