Ir al contenido principal

Entradas

Mostrando entradas de diciembre, 2012

DataGridViewTextEditorColumn (IV Parte)

Ahora veremos la clase DataGridViewTextEditorCell, esta clase como ya había comentado al inicio de este articulo, hereda de DataGridViewTextBoxCell, esta clase se encargara de pintar los botones e interactuar con los eventos del ratón ( Mouse ). no publicare mucho código de esta clase, solo mostrare y explicare los eventos y métodos principales. en esta clase he sobre escrito el evento Paint(), veamos el código:   protected override void Paint ( Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts ) { RepositoryButtonCollection btnCollection = null; if (this.columnButtons.ContainsKey(this.RowIndex)) btnCollection = this.columnButtons[this.RowIndex] as RepositoryButtonCollection;

DataGridViewTextEditorColumn (III Parte)

Continuando con el articulo, ahora veremos la clase DataGridViewTextEditorColumn, esta clase hereda de DataGridViewColumn y le he agregado dos propiedades para nuestro propósito  ShowButtonMode y ColumnEditor, esta ultima propiedad es del tipo RepositoryTextEditor . Los valores para ShowButtonMode son: Always : Indica que los botones de la celda siempre estaran visibles. FocusedRow : Indica que los botones solo se mostraran en la fila activa en el momento. FocusedCell : Indica que los botones solo se mostraran en la celda activa en el momento. Veamos el código:   [ToolboxBitmap(typeof(System.Windows.Forms.TextBox))] public class DataGridViewTextEditorColumn : DataGridViewColumn { private ShowButtonMode showButtonMode; private RepositoryTextEditor repositoryTextEditor; private IDesignerHost IDesignerHost { get { return this.DataGridView.Site.GetService(typeof(IDesignerHost)) as IDesignerHost; } } // Crea el

DataGridViewTextEditorColumn (II Parte)

Bien, continuando con el articulo.... la primera clase que veremos sera RepositoryTextEditor, este heredara de Component ya que no tendrá una UI que interactue con el usuario.   [ToolboxBitmap(typeof(System.Windows.Forms.TextBox))] [DesignerSerializer(typeof(RepositoryButtonSerializer), typeof(CodeDomSerializer))] public class RepositoryTextEditor : Component { private string name; private bool allowWhiteSpace; private HorizontalAlignment textAlign; private CharacterCasing characterCasing; private TextEditor.MaskType maskType; private RepositoryButtonCollection buttons; private static readonly object buttonClick; internal System.Windows.Forms.DataGridView DataGridViewOwner { get; set; } public delegate void RepositoryButtonPressEventHandler(object sender, RepositoryButtonArgs args); public event RepositoryButtonPressEventHandler ButtonClick { add { base.Events.AddHandler(buttonClick, value); } re

DataGridViewTextEditorColumn (I Parte)

Como lo dice el titulo, una clase DataGridViewTextEditorColumn ...  Al principio, cuando cree el control " TextEditor " , la idea era luego crear una columna para el control " DataGridView " que  utilice mi control como editor de la celda para poder agregarle botones, como  también  poder usarlo en celdas donde solo se deban digitar  números . Este ar ticulo lo dividiremos en varios articulos para poder explicarlo mejor e i ntentare explicar mejor cada clase. Por cuestiones de tiempo no lo había hecho, también por cuestiones de pereza, si!!!.. pereza, jejejeje.... solo de pensar el código que tenia que escribir me daba pereza iniciar. Pero!!!... recientemente donde trabajo hice un formulario para capturar la producción de los empleados, pero el usuario me sugirió que le seria mas fácil si el botón para buscar y eliminar los empleados de la captura apareciera en la misma celda. Ademas en varios desarrollos propios debía implementar este tipo de columna que