Estoy tratando de cambiar el color de una fila a verde en un devexpress gridview. Durante la búsqueda me encontré con muchos ejemplos de cómo hacer esto… en los sitios web, PERO esta es una aplicación de windows. No puedo encontrar cualquier cosa en una aplicación de windows, así que por favor alguien puede ayudarme un poco aquí.

Yo simplemente desea cambiar el color de una sola fila a verde.

Olvidó mencionar, es una aplicación de C#.

Gracias por la ayuda.

  • Qué significa el color de fondo o la forecolour?
  • backcolour, pero forecolour ayudará más tarde por lo que permite tanto
  • el tiempo de diseño o en tiempo de ejecución?
  • cuando hago clic en un botón, yo quiero que cambie de color. Supongo que eso significa que en tiempo de ejecución?
InformationsquelleAutor 5tar-Kaster | 2013-08-12

2 Comentarios

  1. 5

    Para cambiar la fila de color en tiempo de ejecución de la manija de la RowStyle evento:

        public Color color1;
        public Color color2;
        public int rowhandle;
    
        private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
            try
            {
                if (e.RowHandle == rowhandle)
                {
                    if (color1 != null && color2 != null)
                    {
                        e.Appearance.BackColor = color1;
                        e.Appearance.BackColor2 = color2;
                    }
                }
            }
            catch
            {
            }
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            color1 = Color.BurlyWood;
            color2 = Color.DarkOrchid;
            rowhandle = gridView1.FocusedRowHandle;
            gridView1.RefreshRow(rowhandle);
        }

    El código de abajo va a mantener el color:

    public partial class Form1 : Form
    {
    public Color color1;
    public Color color2;
    public int rowhandle;
    public List<int> rowhandles;
    private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
    {
    try
    {
    if (rowhandles.Any(x=>x==e.RowHandle))
    {
    if (color1 != null && color2 != null)
    {
    e.Appearance.BackColor = color1;
    e.Appearance.BackColor2 = color2;
    }
    }
    }
    catch
    {
    }
    }
    private void button1_Click(object sender, EventArgs e)
    {
    color1 = Color.BurlyWood;
    color2 = Color.DarkOrchid;
    rowhandle = gridView1.FocusedRowHandle;
    if (!rowhandles.Any(x => x == rowhandle))
    rowhandles.Add(rowhandle);
    gridView1.RefreshRow(rowhandle);
    }
    public Form1()
    {
    InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    Dictionary<int, string> l = new Dictionary<int, string>();
    l.Add(1,"one");
    l.Add(2,"two");
    l.Add(3,"three");
    l.Add(4, "four");
    l.Add(5, "five");
    l.Add(6, "six");
    l.Add(7, "seven");
    l.Add(8, "eight");
    l.Add(9, "nine");
    gridControl1.DataSource = l.ToList();
    rowhandles = new List<int>();
    }
    }
    • ¿Cómo puedo hacer este trabajo para que haga clic en un botón?
    • ¿Cómo elegir el que fila? Yo tengo una solución, pero necesito saber más.
    • Yo uso gridView1.FocusedRowHandle para determinar la fila que fue el último clic en antes de hacer clic en el botón para cambiar el color
    • Intente con mi código editado
    • Me voy a la marca como la respuesta porque me ayudó a encontrar una solución y también que me ha ayudado mucho, gracias. La solución aquí parece que debería funcionar, pero yo voy a seguir a la que yo he descubierto con su ayuda. de nuevo muchas gracias.
    • Me alegro de que podría ser de alguna ayuda. Sería agradable si usted podría publicar su solución para mayor referencia.
    • Yo estaba buscando esta solución durante más de una hora ! muchas gracias

  2. 0

    Sugiero utilizar la siguiente solución simple:

    using DevExpress.XtraGrid;
    using DevExpress.XtraGrid.Views.Base;
    //...
    gridControl1.DataSource = new List<DataObj> {
    new DataObj(){ ID=0, Name="A" },
    new DataObj(){ ID=1, Name="B" },
    new DataObj(){ ID=2, Name="C" },
    new DataObj(){ ID=3, Name="D" },
    };
    gridView1.CustomDrawCell += gridView1_CustomDrawCell;
    //...
    void gridView1_CustomDrawCell(object sender, RowCellCustomDrawEventArgs e) {
    if(selectedRowHandle.GetValueOrDefault(GridControl.InvalidRowHandle) == e.RowHandle) {
    e.Appearance.BackColor = Color.Green;
    }
    }
    int? selectedRowHandle;
    void button1_Click(object sender, EventArgs e) {
    int prevSelectedRowHandle = selectedRowHandle.GetValueOrDefault(GridControl.InvalidRowHandle);
    if(prevSelectedRowHandle != GridControl.InvalidRowHandle)
    gridView1.RefreshRow(prevSelectedRowHandle); //reset row-style to default
    selectedRowHandle = gridView1.FocusedRowHandle;
    gridView1.InvalidateRow(gridView1.FocusedRowHandle); //row painting request
    }

    Esta solución se basa en la GridView.CustomDrawCell caso de que se prefiere cuando sólo es necesario cambiar algunas fila específica apariencia. También funciona para la fila seleccionada actualmente en lugar de GridView.RowCellStyle.

    Relacionados con el tema de la ayuda: Personalización de la apariencia de cada una de las Filas y las Celdas

Dejar respuesta

Please enter your comment!
Please enter your name here