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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 SubAutre 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Bref, je dois faire quelquechose de travers (probleme de comprehension en POO?).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci,
JLuc01
Partager