Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C# .net cf] Code generation for property 'Image' failed.

Pagina: 1
Acties:
  • 630 views sinds 30-01-2008
  • Reageer

  • Storme
  • Registratie: December 2004
  • Laatst online: 18-06 16:41
Dag,

Ik zit al de ganse dag met een irritant probleem in VS 2005.
Ik maak een usercontrol aan voor een compact device, die vervolgens prima werkt at-runtime, maar als ik hem in de designer smijt dan staat ie er wel en kan ik properties aanpassen, maar niet de naam van de control of enig andere control op de form.
Wanneer ik dit probeer krijg ik telkens de foutmelding:

Code generation for property 'Image' failed. Error was: 'Object reference not set to an instance of an object.'

Het rare is nu, wanneer ik wat test op een ander nieuw form dit helemaal het geval niet is. Ik heb al alle topics die ik kon vinden op google omtrent deze fout gelezen, maar niks kon helpen.

Hier eventjes de code van de control:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace GuiTiger {
    [Serializable]
    public partial class cPlates : UserControl {

        #region Privates
        Bitmap _image = null;
        Nullable< Color> _transparentColor = null;
        Size _margin = new Size(5,5);
        Color _borderColor = Color.Black;
        #endregion

        #region Properties

        public Color BorderColor {
            get { return _borderColor; }
            set { _borderColor = value; }
        }

        private decimal ImageScale {
            get {
                if (this._image != null) {
                    return ((decimal)this.Height - (decimal)_margin.Height * 2) / (decimal)this.Image.Height;
                } else { return 1; }
            }
        }

        public Size Margin {
            get { return _margin; }
            set { _margin = value; }
        }

        public Nullable<Color> TransparentColor {
            get { return _transparentColor; }
            set { _transparentColor = value; }
        }
        public Bitmap Image {
            get { return this._image; }
            set { this._image = value; }
        }

        #endregion

        public cPlates() {
            this.Image = null;
            _transparentColor = null;
            //InitializeComponent();
        }

        protected override void OnPaint(PaintEventArgs e) {
            Graphics g = e.Graphics;
            Rectangle r = e.ClipRectangle;
            if (Image != null) {
                System.Drawing.Imaging.ImageAttributes ia = new System.Drawing.Imaging.ImageAttributes();

                if (TransparentColor != null) ia.SetColorKey((Color)TransparentColor, (Color)TransparentColor);
                g.DrawImage(Image, new Rectangle(_margin.Width, _margin.Height, (int)(this.Image.Width * ImageScale), (int)(this.Image.Height * ImageScale)), 0, 0, this.Image.Width, this.Image.Height, GraphicsUnit.Pixel, ia);
            }

            switch (this.BorderStyle) {
                case BorderStyle.Fixed3D:
                    break;
                case BorderStyle.FixedSingle:
                    g.DrawRectangle(new Pen(_borderColor), new Rectangle(r.X, r.Y, r.Width - 1, r.Height - 1));
                    break;
                case BorderStyle.None:
                    break;
                default:
                    break;
            }
            //base.OnPaint(e);
        }

        protected override void OnPaintBackground(PaintEventArgs e) {
            Graphics g = e.Graphics;
            g.FillRectangle(new SolidBrush(this.BackColor), e.ClipRectangle);
            //base.OnPaintBackground(e);
        }
        
    }
}

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Google weet raad. Zie ook hier

Nu met Land Rover Series 3 en Defender 90


  • Storme
  • Registratie: December 2004
  • Laatst online: 18-06 16:41
Die heb ik al gelezen :|
Wanneer je een property aanmaakt met Bitmap hoef je helemaal geen defaultvalue ingeven, null is prima. Elkel in dat ene project wilt het om een of andere reden niet werken.

Ik vermoed dat het te maken heeft met de .resx bestanden, maar aangezien ik verder werk aan een project van een collega (spaghetti) heb ik niet veel benul van hoeveel er al overal rond geprutst geweest is...

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

In 1 van de dingen die via die google search te vinden zijn staat ook eea over versies van de assembly heb je daar ook al naar gekeken?

Nu met Land Rover Series 3 en Defender 90


  • Storme
  • Registratie: December 2004
  • Laatst online: 18-06 16:41
Dat zou het ook mss kunnen zijn, maar had al al m'n assemblies verwijderd en opnieuw gebuild.

Ik heb het ondertussen via een omweggetje opgelost.
Ik heb namelijk een nieuwe class aangemaakt, code gekopiëerd, oude class verwijderd en opnieuw gebuild. Alles werkt nu perfect... 8)7

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

En daarmee is dat versieprobleem natuurlijk ook omzeild :P

Nu met Land Rover Series 3 en Defender 90


  • Storme
  • Registratie: December 2004
  • Laatst online: 18-06 16:41
Idd :9

Heb er in ieder geval genoeg tijd mee verloren ...
Bedankt voor de hulp ;)

  • Storme
  • Registratie: December 2004
  • Laatst online: 18-06 16:41
Sorry om deze topic terug naar boven te sturen, maar ik heb dit probleem terug.

Ik weet ondertussen wel al aan wat het ligt (denk ik), eventjes snel uitleggen:

Ik maak een usercontrol in c# voor .net compact framework. Voor de image property moet hij dus default geen code genereren wanneer ik defaultvalue(null) zet in de DesignTimeAttributes.xmta.
Wat blijkbaar het probleem is wanneer ik de asmmeta decompileer met reflector, is dat hij de defaultvalue(null) er blijkbaar niet in zet.

Mijn vraag is dus simpel: hoe kan ik defaultvalue(null) zetten in de designtimeattributes.xmta, heb al volgende geprobeerd:
code:
1
2
3
4
5
6
7
<Property Name="ImageBitmap">
      <DesignerSerializationVisibility>DesignerSerializationVisibility.Visible</DesignerSerializationVisibility>
      <DefaultValue>
        <Type>System.Drawing.Bitmap</Type>
        <Value>null</Value>
      </DefaultValue>
    </Property>

code:
1
2
3
4
5
6
<Property Name="ImageBitmap">
      <DesignerSerializationVisibility>DesignerSerializationVisibility.Visible</DesignerSerializationVisibility>
      <DefaultValue>
        <Type>(System.Drawing.Bitmap) null</Type>
      </DefaultValue>
    </Property>

code:
1
2
3
4
5
6
7
<Property Name="ImageBitmap">
      <DesignerSerializationVisibility>DesignerSerializationVisibility.Visible</DesignerSerializationVisibility>
      <DefaultValue>
        <Type>null</Type>
        <Value />
      </DefaultValue>
    </Property>

code:
1
2
3
4
5
6
7
<Property Name="ImageBitmap">
      <DesignerSerializationVisibility>DesignerSerializationVisibility.Visible</DesignerSerializationVisibility>
      <DefaultValue>
        <Type>null</Type>
        <Value>null</Value>
      </DefaultValue>
    </Property>
Pagina: 1