Print Page | Close Window

DockingPane - NullReferenceException

Printed From: Codejock Forums
Category: Codejock Products
Forum Name: Docking Pane
Forum Description: Topics Related to Codejock Docking Pane
URL: http://forum.codejock.com/forum_posts.asp?TID=16784
Printed Date: 16 June 2024 at 1:51am
Software Version: Web Wiz Forums 12.04 - http://www.webwizforums.com


Topic: DockingPane - NullReferenceException
Posted By: modwyer8
Subject: DockingPane - NullReferenceException
Date Posted: 03 June 2010 at 11:45am
Hi-

I found another post with this problem that has no resolution.  http://forum.codejock.com/forum_posts.asp?TID=16179

I followed the SDISample.PDF tutorial and created a form that had docking panes on it.  It worked great.  I then followed the same steps and added it as a form to my application.  Every time I try to launch the form with the docking panes on it I get the error:
System.NullReferenceException was unhandled by user code
  Message="Object reference not set to an instance of an object."

on the line where I set the .Title of the first pane:
paneA.Title = "Pane A";
   
I don't understand why this works as a separate app but not as a form.   I even went so far as to add in the DockingPane example provided by CodeJock as a form in my application.  I get the same error with that.  I didn't modify the code at all.  It is the exact sample that CodeJock provides which works on its own.

Does the docking pane work when it is a form in an application or must it be only used in the main form of a standalone app? 

Does anyone have any suggestions?

It appears that .CreatePane is not creating a pane.

Thank you for your help.


StackTrace:
       at MDI_Test.frmCalendar.frmCalendar_Load(Object sender, EventArgs e) in C:\MailManager\Copy of Tester_MDI_Test\MDI_Test\frmCalendar.cs:line 743
       at System.Windows.Forms.Form.OnLoad(EventArgs e)
       at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
       at System.Windows.Forms.Control.Show()
       at MDI_Test.ECFMail.tsBtnCal2_Click(Object sender, EventArgs e) in C:\MailManager\Copy of Tester_MDI_Test\MDI_Test\ECFMail.cs:line 4001
       at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
       at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
       at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
       at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
       at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
       at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
       at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       at System.Windows.Forms.ToolStrip.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



-------------
Product: Xtreme SuitePro ActiveX 2009 (13.0.0)
Platform: Windows XP (32bit) - SP 3
Language: C#, VS2005



Replies:
Posted By: modwyer8
Date Posted: 03 June 2010 at 12:39pm
It seems that I get the NullReferenceException error when I set the MDIParent of the form that contains the DockingPanes.  If I remove that line then the form launches fine.

Now the question is, can the docking panes NOT be used on a child form in an MDI app?

-------------
Product: Xtreme SuitePro ActiveX 2009 (13.0.0)
Platform: Windows XP (32bit) - SP 3
Language: C#, VS2005


Posted By: SuperMario
Date Posted: 04 June 2010 at 1:12pm
Please see the MDI Docking C# or VB.Net sample, it shows how to add DP in MDI Child and as normal form.

"C:\Program Files\Codejock Software\ActiveX\Xtreme SuitePro ActiveX v13.4.0\Samples\Common\VB.NET\MDIDocking\MDIDocking.sln"


Posted By: modwyer8
Date Posted: 04 June 2010 at 4:15pm
Thank you for the reply.  I thought of looking at that example as I was falling asleep last night.  I should have thought of that sooner.

Sorry if this post turns out to be a bit long. 

I have it working to where the form with the docking panes opens as a child of the MDIContainer (which itself does not have a docking pane manager) but the events I set up for the DockingPaneManager are not getting fired off when I create the Pane Objects.  (.GetClientBordersWidth, .AttachPaneEvent...) 

I no longer get the NullReferenceException error and some lines of debug code I put in after creating the Panes show they are not null.  But when my form opens the calendar object (the client part of the DockingPaneManager) is the same size (small) as it is in Design view and there are no panes.

I am pretty sure this is because the events for the DockingPaneManager are not getting hit. 

Are the main differences between the SDI and MDI examples that the MDI example has the "foreach (Control ctrl in this.Controls)..." loop in frmMain that calls SetMDIClient, for a form set to be an MDIContainer - and then putting the initialization of the DockingPaneManager control in the Load of the form with Docking Panes that is to be the child form, as in frmDocument?

Is there something else I am missing?

Again, thanks for the help.

Here is the Load of my child form:
private void frmCalendar_Load(object sender, EventArgs e)
        {
            //
            // DockingPaneManager
            //

            this.DockingPaneManager = new AxXtremeDockingPane.AxDockingPane();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmCalendar));
            ((System.ComponentModel.ISupportInitialize)(this.DockingPaneManager)).BeginInit();
            this.DockingPaneManager.Enabled = true;
            this.DockingPaneManager.Location = new System.Drawing.Point(58, 233);
            this.DockingPaneManager.Name = "DockingPaneManager";
            this.DockingPaneManager.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("DockingPaneManager.OcxState")));
            this.DockingPaneManager.Size = new System.Drawing.Size(24, 24);
            this.DockingPaneManager.TabIndex = 16;
            this.DockingPaneManager.ResizeEvent += new System.EventHandler(this.DockingPaneManager_ResizeEvent);
            this.DockingPaneManager.AttachPaneEvent += new AxXtremeDockingPane._DDockingPaneEvents_AttachPaneEventHandler(this.DockingPaneManager_AttachPaneEvent);
            this.DockingPaneManager.GetClientBordersWidth += new AxXtremeDockingPane._DDockingPaneEvents_GetClientBordersWidthEventHandler(this.DockingPaneManager_GetClientBordersWidth);
            this.DockingPaneManager.Action += new AxXtremeDockingPane._DDockingPaneEvents_ActionEventHandler(this.DockingPaneManager_Action);

            this.Controls.Add(this.DockingPaneManager);
            ((System.ComponentModel.ISupportInitialize)(this.DockingPaneManager)).EndInit();

            DockingPaneManager.ScaleMode = XtremeDockingPane.XTPScaleMode.xtpScalePixel;

            // create side tabbed panes
            CreatePaneObjects();
}

Here is  CreatePaneObjects():

private void CreatePaneObjects()
        {
            //Determine if Alpha Context is supported, if it is, then enable it
            //Determine if Docking Stickers is supported, if they are, then enable them
            if (Environment.OSVersion.Version.Major >= 5)
            {
                DockingPaneManager.Options.AlphaDockingContext = true;
                DockingPaneManager.Options.ShowDockingContextStickers = true;
            }
            else
            {
                DockingPaneManager.Options.AlphaDockingContext = false;
                DockingPaneManager.Options.ShowDockingContextStickers = false;
            }
          
            DockingPaneManager.Options.ShowCaptionMaximizeButton = true;

            Pane curMo = DockingPaneManager.CreatePane(0, 207, 159, XtremeDockingPane.DockingDirection.DockLeftOf, null);
            curMo.Title = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(DateTime.Now.Month);
            curMo.MinTrackSize.SetSize(201, 153);
            curMo.MaxTrackSize.SetSize(210, 159);
               
            DockingPaneManager.Options.ThemedFloatingFrames = true;
}  


-------------
Product: Xtreme SuitePro ActiveX 2009 (13.0.0)
Platform: Windows XP (32bit) - SP 3
Language: C#, VS2005



Print Page | Close Window

Forum Software by Web Wiz Forums® version 12.04 - http://www.webwizforums.com
Copyright ©2001-2021 Web Wiz Ltd. - https://www.webwiz.net