У меня есть datagridview, который кодируется в C# .net
. Мое требование: если я выберу любую ячейку DataGridView, содержимое ячейки должно быть видимым больше как всплывающее окно, или я хочу просмотреть datagridview ячейка больше или установлена, когда переместите мой курсор в определенную ячейку.Сделать выбранным DataGridView Содержимое ячейки больше
ответ
Для текста и числовых значений это может делать то, что вам нужно:
private void dataGridView1_CellPainting(object sender,
DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex < 0 | e.ColumnIndex < 0) return;
if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected)
{
e.Graphics.FillRectangle(SystemBrushes.Highlight, e.CellBounds);
e.Graphics.DrawString(e.Value.ToString(), new Font(e.CellStyle.Font.FontFamily,
e.CellStyle.Font.Size * 1.5f), SystemBrushes.HighlightText, e.CellBounds.Location);
e.Handled = true;
}
}
Вам может понадобиться использовать e.FormattedValue
вместо e.Value
, если вы используете форматы
Вам также может понадобиться, чтобы вставить тест из тип ячейки.
Этот код позволит увеличить шрифт на 50%, пока он не находится в режиме редактирования.
Для изображений потребуется другое решение - возможно, всплывающее ярлык или панель; но это действительно зависит только от того, что вы хотите и какими изображениями они являются. Иконки, которые я оставил бы в покое, фотографии пользователей получат прибыль от увеличенного дисплея.
Конечно, если увеличенное содержание фактически не помещается в ячейке всплывающего решения также будет называться для ..
Upadate
Вот расширение, которое проверяет столбец Value/FormattedValue
и за Bitmap
отображает Image
во всплывающем окне Label
:
Label imageLabel;
bool labelHide = false; //*** new
void showImageLabel(DataGridViewCellPaintingEventArgs e)
{
if (labelHide) return; //*** new
if (imageLabel == null) imageLabel = new Label();
imageLabel.Click += (sender, evt) =>
{ ((Label)sender).Hide(); labelHide = true; }; //*** new
imageLabel.Text = "";
imageLabel.Parent = dataGridView1;
imageLabel.Location = e.CellBounds.Location;
if (imageLabel.Image != null) imageLabel.Image.Dispose();
//Size size = ((Bitmap)e.Value).Size; //*** old
Size size = ((Bitmap)e.FormattedValue).Size; //*** new
Size newSize = new Size((int)(size.Width * 1.5f), (int)(size.Height * 1.5f));
//Bitmap bmp = new Bitmap((Bitmap)e.Value, newSize); //*** old
Bitmap bmp = new Bitmap((Bitmap)e.FormattedValue, newSize); //*** new
imageLabel.Size = newSize;
imageLabel.Image = bmp;
imageLabel.Show();
}
private void dataGridView1_CellPainting(object sender,
DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex < 0 | e.ColumnIndex < 0) return;
if (e.Value == null) { if (imageLabel != null) imageLabel.Hide(); return; }
if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected)
{
//if (e.Value.GetType() == typeof(Bitmap)) //*** old
if (e.FormattedValue.GetType() == typeof(Bitmap)) //*** new
{
showImageLabel(e);
e.Handled = true; //*** old
if (labelHide) labelHide = false; else e.Handled = true; //*** new
return;
}
else if (imageLabel != null) imageLabel.Hide();
e.Graphics.FillRectangle(SystemBrushes.Highlight, e.CellBounds);
e.Graphics.DrawString(e.FormattedValue.ToString(),
new Font(e.CellStyle.Font.FontFamily, e.CellStyle.Font.Size * 1.5f),
SystemBrushes.HighlightText, e.CellBounds.Location);
e.Handled = true;
}
}
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
if (imageLabel != null) imageLabel.Hide();
}
Вы можете адаптировать Расположение быть, например, в центре ..
Обновления 2
Я теперь адаптировал код в случае извлечения Images
непосредственно в качестве byte[]
из базы данных. В этом случае Type
объекта Value
не является Image
. Вместо этого один симплекс должен проверить FormattedValue
.
Если отображаемое изображение, уменьшенное размером Image
, является слишком большим, оно может охватывать все Cell
, и событие Cell_Painting
не будет активировано. Поэтому я также добавил однострочный код для события RowLeave
, чтобы предотвратить это.
Я также добавил несколько строк, чтобы можно было щелкнуть изображение.
Пожалуйста, измените строки, отмеченные знаком // ***, добавьте событие и проверьте, работает ли он сейчас!
Вот два Скриншоты:
ОК, я обновляю ответ всплывающим окном, которое покажет изображения, увеличенные немного позже. О каких размерах мы говорим до и после? – TaW
Ну, это часто помогает узнать подробности при реализации решения. См. Мой обновленный ответ! – TaW
Можете ли вы опубликовать код, который вставляет изображения в dgv? – TaW
- 1. Удалить содержимое ячейки DatagridView
- 2. Сделайте содержимое ячейки таблицы больше ячейки, не меняя ширины ячейки.
- 3. DataGridView Чтобы полностью показать содержимое ячейки
- 4. Значение ячейки строки datagridview
- 5. DataGridView: как сделать некоторые ячейки недоступными?
- 6. Как сделать прозрачный альфа-цвет ячейки datagridview?
- 7. Как сделать автоматический приращение для ячейки datagridview
- 8. Ячейки DataGridView
- 9. Как сделать datagridview отображать содержимое массива?
- 10. Сделать содержимое Silverlight DataGridCell заполнением ячейки?
- 11. DataGridView Выбранный цвет ячейки ячейки
- 12. Datagridview сохранить форматирование ячейки
- 13. Если значение ячейки DataGridView больше, чем другая ячейка
- 14. Увеличение значения ячейки DataGridView
- 15. datagridview Ячейки и комбобокс
- 16. Цвет ячейки в datagridview
- 17. C#: DGV Проверить содержимое ячейки
- 18. сделать пункт подменю выбранным
- 19. Как сделать чекбокс выбранным?
- 20. Как сделать Uibutton выбранным
- 21. populate datagridview с другим выбранным номером datagridview C#
- 22. Wpf datagridview содержимое контейнера
- 23. DataGridView: применить редактирование ко всем выбранным строкам
- 24. Обновить содержимое DataGridView
- 25. Ошибка редактирования ячейки datagridview
- 26. DataGridView делает ячейки недоступными
- 27. Значение умножения ячейки datagridview
- 28. Проблема индекса ячейки DataGridView
- 29. DataGridView - Фокусировка определенной ячейки
- 30. Проверка ячейки в datagridview
Какой тип контента будет там находиться в клетках? Просто текст и цифры, а также изображения, кнопки и т. Д.? Кроме того: будет ли контент до сих пор доступен для редактирования, а расширенный? – TaW
в основном содержание в тексте и картинке, а некоторые - в численном выражении ... наконец-то все типы контентов есть @TaW –
Решили проблему? – TaW