Solved

Why can't I reload my PictureBox?

Posted on 2010-09-20
7
405 Views
Last Modified: 2012-05-10
Hello Everyone

I have a routine whereby Excel creates a chart which is then loaded into the PictureBox of a Form.

The PictureBox.Image is firstly Disposed. Excel is called. Excel then Exports the image of the Chart to a .PNG File. And my  routine places this .PNG file into the PictureBox.

Simple.

My problem is that this only works ONCE.

If I call the same routine again, the PictureBox displays not the .PNG file, but the ErrorImage.

Now, this worked fine using VB Express on a Vista machine.

But on a Win7 machine using Visual Studio 10, the routine can only be passed through successfully ONCE.

Here is a summary of my code ...

========================

 If Me.PictureBox1.Image IsNot Nothing Then Me.PictureBox1.Image.Dispose()

        If My.Computer.FileSystem.FileExists("TheImage.png") Then
            My.Computer.FileSystem.DeleteFile("TheImage.png")
        End If

       
       
        Application.DoEvents()

       
        xl.Visible = False
     
        XLWorkBooks = xl.Workbooks()
        XLWorkBook = XLWorkBooks.Open("C:\oldf\MYEXCEL\progresschart.xlsm")

        Dim XLChart = XLWorkBook.ActiveChart

     
        XLChart.Export("TheImage.png", "png")
        Application.DoEvents()

        PictureBox1.Image = New System.Drawing.Bitmap("TheImage.png")
     
        XLWorkBook.Close()

==============================

The file "TheImage.png" is successfully created by Excel every time.

But, as i mentioned above, the PictureBox just will not reload it on the second time round.

Thank you

Karl
0
Comment
Question by:KarlTheHopeless
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
7 Comments
 
LVL 18

Accepted Solution

by:
John (Yiannis) Toutountzoglou earned 50 total points
ID: 33722588
0
 
LVL 7

Expert Comment

by:klakkas
ID: 33723239
Can you please specify the path that excel saves the png?

When you say
 PictureBox1.Image = New System.Drawing.Bitmap("TheImage.png")
the code looks in the application startup path (the path of the .exe file) for this image. Are you sure that excel saves in the same location?

To test, change your code like this:

        XLChart.Export("c:\TheImage.png", "png")
        Application.DoEvents()
        PictureBox1.Image = New System.Drawing.Bitmap("c:\TheImage.png")

Let me know with the results.

0
 

Author Comment

by:KarlTheHopeless
ID: 33740567
@klakkas

The paths are fine. And the image file is definitely being created.

 Also, remember that the routine does actually work. But only ONCE!

@jtoutou

I can't see anything in your link that does anything really different to what I am trying to do.
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 7

Assisted Solution

by:klakkas
klakkas earned 450 total points
ID: 33741754
Goodmorning Karl.

Well, the only think I can think of is that the picturebox tries to load the image before Excel has finished saving it, or before Excel releases the file.

It is kind of a longshot, but try the following 2 approaches:

Approach 1: Give Excel 5 seconds to complete
        XLChart.Export("TheImage.png", "png")
        Application.DoEvents()
        System.Threading.Thread.Sleep(5000)
        PictureBox1.Image = New System.Drawing.Bitmap("TheImage.png")

Approach 2: Dispose the Excel object, in order to remove all locks.
        XLChart.Export("TheImage.png", "png")
        XLWorkBook.Close()

        Application.DoEvents()

        PictureBox1.Image = New System.Drawing.Bitmap("TheImage.png")
     
Try these 2 and hopefully we will indentify the problem. Afterwards, we can discuss how to solve it in an optimal way.
0
 

Author Comment

by:KarlTheHopeless
ID: 33754444
OK Guys

I have solved the problem - as well as the breakpoint problem mentioned here ...

http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_26496341.html

Both problems arose because of (yet another) Microsoft oversight, in my view.

When programming, I like my windows to appear instantly; not artistically sliding into view; with all the special effects - which is an irritating waste of time when debugging.

To this end, I had set up my Windows 7 using the 'classic' Windows Theme.

This was the problem.

By changing the theme to one of the more modern, artistic themes, both of the above problems went away.

(But now, of course, I have these irritatingly slow windows to contend with.)

Karl

0
 

Author Closing Comment

by:KarlTheHopeless
ID: 33754470
Thank you.
0
 
LVL 7

Expert Comment

by:klakkas
ID: 33754505
Thanks for sharing Karl, you are not so hopeless after all! :-)
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Excel can be a tricky bit of software to get your head around. Whilst you’ll be able to eventually get to grips with the basic understanding of how to get by, there are a few Excel tips that not everybody will even know about let alone know how to d…
In Part II of this series, I will discuss how to identify all open instances of Excel and enumerate the workbooks, spreadsheets, and named ranges within each of those instances.
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…
This Micro Tutorial will demonstrate how to use longer labels with horizontal bar charts instead of the vertical column chart.

617 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question