Столбец кнопки изображения DataGridView - PullRequest
6 голосов
/ 11 июля 2011

Я хочу добавить кнопку изображения в столбце datagridviews.Я добавил datagridview с помощью datagridviewbuttonColumn, но я не устанавливаю для этого изображения.Я хочу добавить изображение с кнопкой в ​​столбце datagridviews и при нажатии на эту кнопку datagridview строки редактировать или удалять.Пожалуйста, как мне это сделать!

Ответы [ 5 ]

6 голосов
/ 11 декабря 2013

Один из способов добиться этого - просто переопределить метод Paint из DataGridViewButtonCell и вызвать DrawImage из графического параметра.Вызов должен произойти после базового вызова.

public class DeleteCell : DataGridViewButtonCell {
        Image del = Image.FromFile("..\\..\\img\\delete.ico");
        protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
        {
            base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);
            graphics.DrawImage(del, cellBounds);
        }
    }

После этого просто создайте свой собственный DataGridViewButtonColumn и установите созданный DeleteCell в качестве шаблона ячейки:

public class DeleteColumn : DataGridViewButtonColumn {
        public DeleteColumn() {
            this.CellTemplate = new DeleteCell();
            this.Width = 20;
            //set other options here 
        }
    }

ЭтоЭто.Теперь используйте DeleteColumn для вашего DataGridView:

dgvBookings.Columns.Add(new DeleteColumn());

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

3 голосов
/ 11 июля 2011

Хотя DataGridView имеет ButtonColumn, он не обеспечивает прямой способ отображения изображений.

Следующая ссылка может помочь вам шаг за шагом достичь своей цели:

Ячейка кнопки изображения DataGridView

Надеюсь, это поможет ...

0 голосов
/ 11 ноября 2013

Можно предоставить HTML в Text-свойстве asp: ButtonColumn. Таким образом, вы можете сделать что-то вроде этого:

<asp:ButtonColumn Text="&lt;img src='icons/delete.gif' border='0' title='Delete entry' &gt;" CommandName="delete"></asp:ButtonColumn>

Это представляется следующим образом (HTML):

<td>
  <a href="...">
    <img src='icons/delete.gif' border='0' title='Delete entry' />
  </a>
</td>
0 голосов
/ 15 марта 2012

Просто создайте таблицу данных с колонкой и добавьте в нее картинку

dtMain.Columns.Add ("ImageColumn", typeof (Image));

dtMain.Rows.Add (Image.FromFile (photopath + "1.jpg"));

Тогда по событию dataGridViewMain_CellContentClick написать следующий код

  if (e.ColumnIndex == dataGridViewMain.Columns["ImageColumn"].Index)
  {
  lblShowCellData.Text = dataGridViewMain.Rows[e.RowIndex].Cells["CustomerName"].Value.ToString();
  // Do some thing else....
  }

Загрузить полный код на http://tablegridview.blogspot.in

0 голосов
/ 11 июля 2011

Вы можете использовать настраиваемый класс DataGridViewImage, который наследуется от класса DataGridViewImageButtonCell, как показано ниже

public class DataGridViewImageButtonDeleteCell : DataGridViewImageButtonCell
{
    public override void LoadImages()
    {
       // Load them from a resource file, local file, hex string, etc.          
    }
}

А также, проверьте эту тему, а также

...