То, что вы пытаетесь получить здесь, это тип объекта, хранящегося в ячейке datagridview, который действительно является объектом "System.Type", а не "System.Drawing.Image", приведениемэто бесполезно здесь.Вам нужно получить содержимое ячейки, а не тип содержимого.
В этом коде есть другие ошибки!
SelectedCells - это коллекция ячеек.Таким образом, вы получаете не тип содержимого ячейки, а тип коллекции (т. Е. DataGridViewSelectedCellCollection).Если вы уверены, что выбрана хотя бы одна ячейка, вы должны использовать SelectedCells[0]
.
Вы хотите получить содержимое ячейки, а не ее тип.Используйте Value
вместо GetType()
.
Я не понимаю, почему вы создаете новый EquipmentFinder
.Это создаст пустую и никогда не отображаемую форму ... Что я предлагаю: создать свойство для хранения изображения в ProductDescriptionForm
:
public Image Picture
{
get { return imagepicture.Image; }
set { imagepicture.Image = value; }
}
Затем установите это свойство перед отображениемФорма описания продукта:
private void productGridview_Cellclick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == productgridview.Columns["productimage"].Index)
{
ProductDescriptionForm pf = new ProductDescriptionForm();
pf.Picture = (Image)productgridview.SelectedCells[0].Value;
pf.ShowDialog(this);
}
}
И удалите код, который вы написали в ProductDescriptionForm_Load
.
PS: хотя я надеюсь, что этот код работает, он все еще пропускает границы и проверку типов.Я бы порекомендовал написать что-то вроде этого:
private void productGridview_Cellclick(object sender, DataGridViewCellEventArgs e)
{
// Don't handle clicks on the column header.
if (e.RowIndex == -1) return;
// Bad index
if (e.ColumnIndex != productgridview.Columns["productimage"].Index) return;
// No selection
if (productgridview.SelectedCells.Count == 0) return;
// Make sure we have an image in this cell.
object selectedValue = productgridview.SelectedCells[0].Value;
if (selectedValue is Image)
{
// Forms are IDisposable, so use them embedded in a using statement.
using (ProductDescriptionForm pf = new ProductDescriptionForm())
{
pf.Picture = (Image)selectedValue;
pf.ShowDialog(this);
}
}
}
Надеюсь, это поможет.