我已经做了这一个,在这条线将阵列的字节的一列在GridView控件System.Drawing.Image对象得到了一个错误
图片returnImage = Image.FromStream(MS);
ArgumentException的是未处理
参数无效。
和code是这样
专用字节[] objtoarray(obj对象)
{
如果(OBJ == NULL)
返回null;
BinaryFormatter的BF =新的BinaryFormatter();
MemoryStream的毫秒=新的MemoryStream();
bf.Serialize(MS,OBJ);
返回ms.ToArray();
}
公众形象bytearraytoimage(byte []的字节组)
{
MemoryStream的毫秒=新的MemoryStream(字节数组,0,bytearray.Length);
图像returnImage = Image.FromStream(毫秒);
返回returnImage;
}
私人无效productGridview_Cellclick(对象发件人,DataGridViewCellEventArgs E)
{
byte []的位= NULL;
图片IMG = NULL;
如果(e.ColumnIndex = productgridview.Columns [productimage]指数!)回报;
如果(productgridview.SelectedCells.Count == 0)收益;
反对了selectedValue = productgridview.SelectedCells [0] .value的;
位= objtoarray(了selectedValue);
的img = bytearraytoimage(比特);
如果(IMG为图片)
{
//表单是IDisposable的,所以用它们嵌入在using语句。
使用(ProductDescriptionForm PF =新ProductDescriptionForm())
{
pf.picture =(图片)了selectedValue;
pf.ShowDialog(本);
}
}
}
解决方案
在文档状态的ArgumentException可提高为:
流不具备有效的图像格式
-要么-
流为空。
所以,因为 objtoarray
可以返回空值,是 productgridview.SelectedCells [0] .value的
null,或者一个无效值?
对象了selectedValue = productgridview.SelectedCells [0] .value的;
位= objtoarray(了selectedValue);
I have done this one for converting the byte of array in one of the columns in gridview to system.drawing.image got an error at this line
Image returnImage = Image.FromStream(ms);
argumentexception was unhandled
Parameter is not valid.
and the code is like this
private byte[] objtoarray(object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
public Image bytearraytoimage(byte[] bytearray)
{
MemoryStream ms = new MemoryStream(bytearray,0,bytearray.Length);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
private void productGridview_Cellclick(object sender, DataGridViewCellEventArgs e)
{
byte[] bits = null;
Image img = null;
if (e.ColumnIndex != productgridview.Columns["productimage"].Index) return;
if (productgridview.SelectedCells.Count == 0) return;
object selectedValue = productgridview.SelectedCells[0].Value;
bits= objtoarray(selectedValue);
img = bytearraytoimage(bits);
if (img 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);
}
}
}
解决方案
The docs state that ArgumentException can be raise for :
The stream does not have a valid image format
-or-
stream is null.
So since objtoarray
can return null, is productgridview.SelectedCells[0].Value
null, or of an invalid value?
object selectedValue = productgridview.SelectedCells[0].Value;
bits= objtoarray(selectedValue);
上一篇:prevent的XmlTextReader从扩大实体实体、prevent、XmlTextReader
下一篇:TableLayoutPanel中GetCellPosition和GetPositionFromControl,他们如何不同?不同、TableLayoutPanel、GetCellPosition、G