2013-05-28 2 views
2

Я думал, что PaintParts указывает, какие части должны быть покрашены по умолчанию. Кажется, что он работает нормально, но когда выбран DataGridViewCell, все покрашено по умолчанию. Я просто хочу, чтобы нарисовать все, кроме содержания, вот мой код:PaintParts в RowPrePaint DataGridView не работает?

private void dataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e){ 
    e.PaintParts = DataGridViewPaintParts.All & ~DataGridViewPaintParts.ContentForeground; 
} 

Это хорошо работает, когда не выбрана ячейка, тем не менее, если выбрать ячейку, она написана по умолчанию со всем фоном и содержанием. Стандарт по умолчанию/DataGridView работает нормально, но я имею дело с пользовательским/третьим лицом DataGridView.

Не могли бы вы объяснить мне, что это такое, и дать мне некоторое решение для этого?

Большое спасибо!

ответ

1

Я считаю, вы могли бы просто указать, что все будет окрашено, за исключением Content Foreground таким образом.

Я сделал это, и он работает.

Это должно быть именно то, что вам нужно, если вам не нужны только определенные ячейки, чтобы не рисовать все их краски.

private void dataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) 
{ 
    e.PaintCells(e.ClipBounds, DataGridViewPaintParts.ContentBackground | DataGridViewPaintParts.Border | DataGridViewPaintParts.Background | DataGridViewPaintParts.SelectionBackground); 
    e.Handled = true; 

    //The e.Handled = true tells the event handler that the event has been completed and that the system doesn't need to do anymore processing. This line is required to ensure it doesn't process any further(paint more stuff). 
} 

пс. только что нашел этот

C# DataGridViewCheckBoxColumn Hide/Gray-Out

+0

Как я уже сказал в своем вопросе, мой код действительно работает для стандартного DataGridView в .NET, но он не работает для пользовательского DataGridView, с которым я работаю. И, конечно же, поэтому ваш код также не работает. Я не думаю, что для этого есть простое решение, потому что DataGridView настроен не для того, чтобы другие могли изменить способ его отображения. Если вы хотите попробовать, просто проверьте свой код с помощью DataGridViewX (в DotNetBar), а не со стандартным DataGridView. Благодаря! –

0

для DataGridViewX нужно отключить усиление офиса 2007

попробовать

this.nameofyoudatagridview.PaintEnhancedSelection = false; 

при установке свойства

сделали эту работу для вас?

Смежные вопросы