C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Дебетовая карта Home Credit [CPS] RU

 Меняем фон произвольной клетки в Datagrid / DataGrid / C#

Меняем фон произвольной клетки в Datagrid.

Автор :
Павел Гнелица

В этой статье я хочу показать, как менять фон произвольной клетки в Datagrid.

Для реалиизации этого надо создать класс, наследованный от класса DataGridTextBoxColumn или DataGridColumnStyle. Далее перегрузить метод Paint() этих классов. Заметьте, у этого метода есть три перегруженных версии.
Для начала, вы можете проверить значение этой клетки в колонке с помощью метода GetColumnValueAtRow. Затем установить нужную кисть, заполнить клетку, а потом написать текст нужным шрифтом. Вот пример, который использовал я:
protected override void Paint(Graphics g, Rectangle Bounds, CurrencyManager Source,
                              int RowNum, Brush BackBrush, Brush ForeBrush, 
                              bool AlignToRight) 
{
    
    bool bdel = (bool) GetColumnValueAtRow(Source, RowNum);

    if(bdel == true)
        BackBrush = Brushes.Coral;
    else
        BackBrush = Brushes.White;

    g.FillRectangle(BackBrush, Bounds.X, Bounds.Y, Bounds.Width, Bounds.Height);

    System.Drawing.Font font = new Font(System.Drawing.FontFamily.GenericSansSerif, 
                                        (float)8.25 );
    g.DrawString( bdel.ToString(), font, Brushes.Black, Bounds.X, Bounds.Y);
}


И использовал колонку с типом Bool. Также легко можно поменять шрифт.

Общий стиль DataGrid, меняется с помощью классов DataGridTableStyle и DataGridColumnStyle. Вот как это сделать:

private void CreateDataGridStyle() 
{
    DataGridColumnStyle GridDelColumn;
    DataGridColumnStyle GridSeqStyle;
    DGStyle = new DataGridTableStyle(); 
    DGStyle.MappingName = "Table1";

    GridSeqStyle = new DataGridTextBoxColumn();
    GridSeqStyle.MappingName = "Column1";
    GridSeqStyle.HeaderText = "Column1";
    GridSeqStyle.Width = 100;
    DGStyle.GridColumnStyles.Add(GridSeqStyle);

    PropertyDescriptorCollection pcol = this.BindingContext[myDataSet,"Table1"].GetItemProperties();

    GridDelColumn = new ColumnStyle(pcol["Table1"]);
    GridDelColumn.MappingName = "Column2";
    GridDelColumn.HeaderText = "Column2";
    GridDelColumn.Width = 100;
    DGStyle.GridColumnStyles.Add(GridDelColumn);

    DGStyle.AllowSorting         = true;
    DGStyle.RowHeadersVisible    = true;
}


После этого Вы добавляете стиль в datagrid:

CreateDataGridStyle();
myDataGrid.TableStyles.Add(DGStyle);

myDataGrid.SetDataBinding(myDataSet,"Table1");


Детальная информация стоимость прочистки канализации у нас на сайте.
Дебетовая карта Home Credit [CPS] RU