DataGridView默认错误对话框,参数无效

时间:2015-10-29 13:34:29

标签: c#

我收到以下错误:

  

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文件的信息。

1 个答案:

答案 0 :(得分:1)

这种错误太难以从您提供的信息中找出。 我可以给出一些小提示。 •这是一个datagridview绑定问题。所以错误的基础必须是绑定。 •检查datagridview获取的属性的值,并分析它是否应该获取这些值。 •您是否插入了DataGridViewColumn( •DataGridViewTextBoxColumn或DataGridViewCheckBoxColumn或DataGridViewComboBoxColumn)并将这些列绑定到不同值的某些属性。 •绑定财产可能存在一些不匹配。 •如果仍然无法找出真正的原因,那么在课堂上注释掉所有属性,只保留一个属性并检查错误是否到来。通过这种方式逐个检查每个属性,并在那时评论所有其他属性。然后,您将能够看到错误来自哪个属性绑定。