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默认错误对话框,参数无效

这种错误很难从您提供的信息中判断出来。我可以给出的小提示:

  • 这是一个数据网格视图绑定问题。因此,错误的基础一定是绑定
  • 检查datagridview正在获取的属性的值,并分析它是否应该获取这些值
  • 您是否插入了类似DataGridViewColumn(DataGridViewTextBoxColumn或DataGridViewCheckBoxColumn或者DataGridViewComboBoxColumn)的数据网格视图列,并将这些列绑定到不同值的某个属性
  • 绑定属性时可能存在不匹配
  • 如果仍然不能找出真正的原因,那么注释掉类中的所有属性,只保留一个属性,并检查是否会出现错误。通过这种方式,逐一检查每个属性,并在那个时候注释所有其他属性。然后,您将能够看到哪个属性绑定将出现错误