【问题标题】:DataGridView Default Error Dialog ,Parameter is not validDataGridView 默认错误对话框,参数无效
【发布时间】:2015-10-29 13:34:28
【问题描述】:

我收到以下错误:

DataGridView 默认错误对话框
DataGridView 出现以下异常:

System.ArgumentException:参数无效。

在 System.Drawing.Image.FromStream(Stream 流,布尔值 useEmbeddedColorManagement, Boolean validateImageData)

在 System.Drawing.Image.FromStream(Stream 流,布尔值 使用EmbeddedColorManagement)

在 System.Drawing.Image.FromStream(Stream 流)

在 System.Drawing.ImageConverter.ConvertFrom(ITypeDescriptorContext 上下文、CultureInfo 文化、对象值)

在 System.Windows.Forms.Formatter.FormatObjectInternal(Object 值,类型 targetType,TypeConverter sourceConverter,TypeConverter targetConverter, String formatString, IFormatProvider formatInfo, 对象格式化NullValue)

在 System.Windows.Forms.Formatter.FormatObject(对象值,类型 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 格式化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);
        }
    }
}

我将上述类的列表绑定到 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 文件的信息。

【问题讨论】:

  • 请分享实际导致错误的代码,而不仅仅是您的类的实现。

标签: c#


【解决方案1】:

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

  • 这是一个 datagridview 绑定问题。所以错误的根源必须在绑定中。
  • 检查 datagridview 正在获取的属性的值,并分析它是否应该获取这些值。
  • 您是否插入了类似 DataGridViewColumn(DataGridViewTextBoxColumn 或 DataGridViewCheckBoxColumn 或 DataGridViewComboBoxColumn)并将这些列绑定到不同值的某个属性。
  • 绑定属性时可能存在一些不匹配。
  • 如果您仍然无法找出真正的原因,请注释掉类中的所有属性并仅保留一个属性并检查错误是否出现。这样一来一一检查每个属性,并在当时评论所有其他属性。然后您将能够看到错误出现在哪个属性绑定上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    相关资源
    最近更新 更多