我收到以下错误:
DataGridView默认错误对话框
DataGridView中发生以下异常:System.ArgumentException:参数无效。
at System.Drawing.Image.FromStream(Stream stream,Boolean useEmbeddedColorManagement,Boolean validateImageData)
at System.Drawing.Image.FromStream(Stream stream,Boolean useEmbeddedColorManagement)
在System.Drawing.Image.FromStream(Stream stream)
在System.Drawing.ImageConverter.ConvertFrom(ITypeDescriptorContext 上下文,CultureInfo文化,对象价值)
在System.Windows.Forms.Formatter.FormatObjectInternal(Object value,Type targetType,TypeConverter sourceConverter,TypeConverter targetConverter,String formatString,IFormatProvider formatInfo, Object formattedNullValue)
at System.Windows.Forms.Formatter.FormatObject(Object value,Type targetType,TypeConverter sourceConverter,TypeConverter targetConverter,String formatString,IFormatProvider formatInfo, Object formattedNullValue,Object dataSourceNullValue)
在System.Windows.Forms.DataGridViewCell.GetFormattedValue(Object value,Int32 rowIndex,DataGridViewCellStyle& cellStyle,TypeConverter valueTypeConverter,TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context) 要替换此默认对话框,请处理DataError事件。
我创建了一个类
[DataContract]
public class Document : INotifyPropertyChanged
{
[DataMember]
private string _name;
[DataMember]
private DateTime _addedOn;
[DataMember]
private string _extension;
[DataMember]
private byte[] _content;
public event PropertyChangedEventHandler PropertyChanged = delegate { };
public Document()
{
_name = String.Empty;
_extension = String.Empty;
_content = null;
_addedOn = DateTime.Now;
}
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged("Name");
}
}
public DateTime AddedOn
{
get { return _addedOn; }
set
{
_addedOn = value;
OnPropertyChanged("AddedOn");
}
}
public string Extension
{
get { return _extension; }
set
{
_extension = value;
OnPropertyChanged("Extension");
}
}
public Byte[] Content
{
get { return _content; }
set
{
_content = value;
OnPropertyChanged("Content");
}
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
/// <summary>
/// Gets a value indicating if this document has already been submitted
/// to BancServ.
/// </summary>
public bool Processed
{
get
{
return (_content == null || _content.Length == 0);
}
}
}
我将上述类的列表绑定到datagridview,然后我在下一节中得到上述错误(这是一个简单的绑定)
protected override void OnInitialize()
{
try
{
_documentsGridView.DataSource = this.Data.Documents;
base.OnInitialize();
}
catch (Exception ex)
{
}
}
void btnBrowse_Click(object sender, EventArgs e)
{
try
{
Document document = this.Data.RequestDocument(FileKind.Browse, "Pdf files|*.pdf");
this.Data.Documents.Add(document);
}
catch (Exception ex)
{
}
}
在这里,我正在浏览* .pdf文件,并在列表中的datagridview中提供.pdf文件的信息。
答案 0 :(得分:1)
这种错误太难以从您提供的信息中找出。 我可以给出一些小提示。 •这是一个datagridview绑定问题。所以错误的基础必须是绑定。 •检查datagridview获取的属性的值,并分析它是否应该获取这些值。 •您是否插入了DataGridViewColumn( •DataGridViewTextBoxColumn或DataGridViewCheckBoxColumn或DataGridViewComboBoxColumn)并将这些列绑定到不同值的某些属性。 •绑定财产可能存在一些不匹配。 •如果仍然无法找出真正的原因,那么在课堂上注释掉所有属性,只保留一个属性并检查错误是否到来。通过这种方式逐个检查每个属性,并在那时评论所有其他属性。然后,您将能够看到错误来自哪个属性绑定。