DataGridView默认错误对话框,参数无效
本文关键字:参数 无效 对话框 默认 错误 DataGridView | 更新日期: 2023-09-27 18:19:55
我得到以下错误:
DataGridView默认错误对话框
DataGridView中发生以下异常:System.ArgumentException:参数无效。
在System.Drawing.Image.FromStream(流,布尔使用嵌入的颜色管理,布尔验证图像数据)
在System.Drawing.Image.FromStream(流,布尔使用嵌入式颜色管理)
在System.Drawing.Image.FromStream(Stream)
在System.Drawing.ImageConverter.ConvertFrom(ITypeDescriptorContext上下文,CultureInfo文化,对象值)
位于System.Windows.Forms.Formatter.FormatObjectInternal(对象value,Type targetType,TypeConverter sourceConverter,TypeConverterstargetConverter,字符串formatString,IFormatProvider formatInfo,对象格式为NullValue)
位于System.Windows.Forms.Formatter.FormatObject(对象值,类型targetType,TypeConverter sourceConverter,TypeConverterstargetConverter,字符串formatString,IFormatProvider formatInfo,对象格式NullValue,对象数据SourceNullValue)
位于System.Windows.Forms.DataGridViewCell.GetFormattedValue(对象value,Int32行索引,DataGridViewCellStyle&cellStyle,TypeConvertervalueTypeConverter,TypeConverter格式valueTypeConverter,DataGridViewDataErrorContexts上下文)若要替换此默认对话框,请处理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);
}
}
}
我将上面类的列表绑定到数据网格视图,然后在下面的部分中得到上面的错误(这是一个简单的绑定)
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文件,并通过列表在数据网格视图中提供.pdf文件的信息。
这种错误很难从您提供的信息中判断出来。我可以给出的小提示:
- 这是一个数据网格视图绑定问题。因此,错误的基础一定是绑定
- 检查datagridview正在获取的属性的值,并分析它是否应该获取这些值
- 您是否插入了类似DataGridViewColumn(DataGridViewTextBoxColumn或DataGridViewCheckBoxColumn或者DataGridViewComboBoxColumn)的数据网格视图列,并将这些列绑定到不同值的某个属性
- 绑定属性时可能存在不匹配
- 如果仍然不能找出真正的原因,那么注释掉类中的所有属性,只保留一个属性,并检查是否会出现错误。通过这种方式,逐一检查每个属性,并在那个时候注释所有其他属性。然后,您将能够看到哪个属性绑定将出现错误