Как отобразить значок в ячейке данных datagridview c вместо True или false логического типа, в C# winform? - PullRequest
0 голосов
/ 20 января 2020

Как я могу отобразить значок в ячейке спецификаций datagridview вместо True или false для логического типа? У меня есть эти два изображения в моих ресурсах проекта (я не знаю, является ли это лучшим местом для их хранения). Это как большие пальцы вверх и вниз изображения. Заранее спасибо! Вот мой код, который я пытаюсь исправить, но оффсорс не работает

var result = (from u in db.Analys
              join d in db.Department on u.deptId equals d.deptId 
              select new
             {
               AnalysId = u.Id
               Department = d.DepartmenName,                                           
               Accept= u.accept == true ? Resources.thumbsUp : Resources.thumbsDown   

           }).ToList();
           if (result != null)
           {
             daraGridViewResult.DataSource = null;
             daraGridViewResult.DataSource = result;

           }

1 Ответ

0 голосов
/ 20 января 2020

В событие CellPainting вашей сетки вы можете добавить код, подобный следующему:

 e.Paint(e.CellBounds, DataGridViewPaintParts.All);

 var w = Properties.Resources.yes.Width;
 var h = Properties.Resources.yes.Height;
 var x = e.CellBounds.Left + (e.CellBounds.Width - w) / 2;
 var y = e.CellBounds.Top + (e.CellBounds.Height - h) / 2;

 e.Graphics.DrawImage(image, new Rectangle(x, y, w, h));

, где «изображение» - это изображение, которое вы хотите отобразить вместо «true» или «false».

Имейте в виду, что этот код будет выполняться для каждой отдельной ячейки в сетке данных. Вы должны контролировать, что это относится только к ячейкам вашего логического столбца.

РЕДАКТИРОВАТЬ:

 if (e.ColumnIndex == yourGrid.Columns["Accept"].Index)
 {
      e.Paint(e.CellBounds, DataGridViewPaintParts.All);

      var w = Properties.Resources.yes.Width;
      var h = Properties.Resources.yes.Height;
      var x = e.CellBounds.Left + (e.CellBounds.Width - w) / 2;
      var y = e.CellBounds.Top + (e.CellBounds.Height - h) / 2;

      e.Graphics.DrawImage(image, new Rectangle(x, y, w, h));
 } //if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...