Le probleme classique: Object reference not set to an instance of an object.
Bonjour,
J'ai cette erreur classique lorsque je click sur le bouton btnFitToScreen: "Object reference not set to an instance of an object." (NullReferenceException was unhandled)
Et toujours le meme conseil: "Use the 'New' keyword to create an object instance."
Je crois que je comprends le probleme, mais je ne sais pas comment le resoudre. Dans ma classe cdtPosterBase, l'Image est vide ("Nothing"), donc evidemment la propriete "m_OriginalImage.Width" n'a rien. Je pense qu'il y a peut-etre un probleme de declaration de variable ou purement un probleme de POO.
Bref, si quelqu'un peut me dire ou se trouve le probleme, je serais ravi.
J'ai simplifie le code de facon a pointer sur le probleme rencontre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
Public Class Form1
Private cdtPB As cdtPosterBase
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Create a PictureBox (pbDemo) as cdtPosterBase
Dim pbDemo As New PictureBox
pbDemo.Image = My.Resources.Serge
Me.SplitContainer.Panel2.Controls.Add(pbDemo)
' Assign pbDemo to the class cdtPictureBox
cdtPB = New cdtPosterBase(pbDemo)
End Sub
Private Sub btnFitToScreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFitToScreen.Click
cdtPB.FitToScreen()
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Imports System.Drawing.Imaging
Public Class cdtPosterBase
Inherits PictureBox
Public Shadows Property Image() As System.Drawing.Image
Get
Return m_OriginalImage
End Get
Set(ByVal Value As System.Drawing.Image)
Dim r As New Rectangle(0, 0, Value.Width, Value.Height)
m_OriginalImage = New Bitmap(Value)
m_OriginalImage = DirectCast(m_OriginalImage.Clone(r, Imaging.PixelFormat.Format32bppPArgb), Bitmap)
Me.Invalidate()
End Set
End Property
Public Sub FitToScreen()
Me.Origin = New Point(0, 0)
ZoomFactor = Math.Min(ClientSize.Width / m_OriginalImage.Width, ClientSize.Height / m_OriginalImage.Height) ' MESSAGE D'ERREUR !
End Sub |
Autre point important ou pas, ce probleme est aussi arrive depuis que j'ai voulu ajoute un ContextMenu dans la "Public Sub New" (voir ci-dessous).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
Public WithEvents pbBase As PictureBox
Private oCtxMenu As New ContextMenuStrip
Private oToolStripItem1 As New ToolStripMenuItem
Private oToolStripItem2 As New ToolStripMenuItem
Public Sub New(ByVal cPictureBox As PictureBox)
pbBase = cPictureBox
oToolStripItem1.Text = "Info"
AddHandler oToolStripItem1.Click, AddressOf ContextMenuHandler1_Click
oCtxMenu.Items.Add(oToolStripItem1)
' IN SHORT=> oCtxMenu.Items.Add("Info", New System.EventHandler(AddressOf Me.ContextMenuHandler1_Click))
oToolStripItem2.Text = "Delete"
AddHandler oToolStripItem2.Click, AddressOf ContextMenuHandler2_Click
oCtxMenu.Items.Add(oToolStripItem2)
pbBase.ContextMenuStrip = oCtxMenu
End Sub |
Bref, je dois faire quelquechose de travers (probleme de comprehension en POO?).
Merci,
JLuc01