Pregunta

Tengo un DataGridView en una ventana modal con una lista de opciones para mi programa. La cuadrícula tiene dos columnas. El primero contiene una casilla de verificación para seleccionar esa opción, el segundo es el nombre / descripción de esa opción. El formulario de ganancias también contiene los botones Aceptar y Cancelar, pero eso no viene al caso. El código de abajo hace lo que quiero que haga. Debido a la propiedad FullRowSelect, la casilla de verificación está marcada / desmarcada al hacer clic en cualquier lugar dentro de esa fila. Sin embargo, ya no muestra un fondo azul o una línea de puntos alrededor de la fila actual. ¿Cómo podría agregar esto sin perder ninguna de las funciones actuales?

EDIT: Para elaborar; Lo que quiero es volver a habilitar la línea de puntos y / o el fondo azul en las filas / celdas seleccionadas. Parece que el código que tengo actualmente desactiva esto de alguna manera ...

Código actual relevante:

public OptionsForm()
{
    InitializeComponent();
    OptionsRoot = Options.GetReadOnlyRoot(OptionsBannersNameValueList.GetNameValueList(Settings.Default.OptionsBanners));
    optionsBannersDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    optionsBannersDataGridView.MultiSelect = false;
    optionsBannersDataGridView.RowPrePaint += new DataGridViewRowPrePaintEventHandler(optionsBannersDataGridView_RowPrePaint);
    InitUI();
    Closing += MyFormClosing;
    BindingSourceTree = BindingSourceHelper.InitializeBindingSourceTree(components, rootBindingSource);
}

private void optionsBannersDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
    e.PaintParts &= ~DataGridViewPaintParts.Focus;
}
¿Fue útil?

Solución 2

Lo que finalmente hice fue eliminar la mayor parte del código mencionado anteriormente, ya que realmente no hizo mucho. Por alguna razón, cuando configuré las propiedades en Visual Studio, no funcionó, pero ahora sí. No sé qué pasó allí, pero eso no viene al caso.

El constructor ahora se ve así:

public OptionsForm()
    {
        InitializeComponent();
        AlternativerRoot = Alternativer.GetReadOnlyRoot(AlternativerFanerNameValueList.GetNameValueList(Settings.Default.AlternativerFaner));
        InitUI();
        Closing += MyFormClosing;
        _bindingSourceTree = BindingSourceHelper.InitializeBindingSourceTree(components, rootBindingSource);
    }

Las propiedades se establecen en la GUI de Visual Studio en su lugar. SelectionMode se establece en FullRowSelect y MultiSelect se establece en false.

Todavía no conseguí el enfoque que quería, así que configuré el color de fondo de la fila seleccionada en azul y el color en blanco en Visual Studio. Esto ahora funciona como yo quería.

Todavía no sé por qué las propiedades no se configuraron correctamente anteriormente, pero al menos funciona ahora: P

Otros consejos

Intentaría usar el .OnCellClick y configure el color de la fila en azul. Creo que también deberías poder agregar un borde punteado.

Creo que puedes llamarlo así:

optionsBannersDataGridView.OnCellClick += new DataGridViewCellEventArgs(optionsBannersDataGridView_OnCellClick);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top