473,698 Members | 2,149 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Displaying high-res images in .NET?

..NET 1.1/2.0

I have a need to display high-resolution scrollable images in a .NET
application (Windows Forms). One well known solution is to create a
Panel with AutoScroll set to "true" and then add a PictureBox or
another Panel to it, that is used to display the image.

The above approach works, however, to my surprise, .NET GDI+-based
graphics are not really hi-res friendly.

Consider the following codes examples:

1)
Bitmap b = new Bitmap( 6000, 6000 );
panel2.Backgrou ndImage = b; // <-- Works OK

2)
Bitmap b = new Bitmap( 14000, 10000 );
panel2.Backgrou ndImage = b; // <-- "Out of memory" error
The full stack of the error is:

System.OutOfMem oryException: Out of memory.
at System.Drawing. TextureBrush..c tor(Image image, WrapMode
wrapMode)
at System.Windows. Forms.Control.P aintBackground( PaintEventArgs e,
Rectangle rectangle)
at System.Windows. Forms.Control.O nPaintBackgroun d(PaintEventArg s
pevent)
at
System.Windows. Forms.Control.P aintWithErrorHa ndling(PaintEve ntArgs e,
Int16 layer, Boolean disposeEventArg s)
at System.Windows. Forms.Control.W mEraseBkgnd(Mes sage& m)
at System.Windows. Forms.Control.W ndProc(Message& m)
at System.Windows. Forms.Scrollabl eControl.WndPro c(Message& m)
at System.Windows. Forms.ControlNa tiveWindow.OnMe ssage(Message& m)
at System.Windows. Forms.ControlNa tiveWindow.WndP roc(Message& m)
at System.Windows. Forms.NativeWin dow.Callback(In tPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)
Internally, the TextureBrush constructor makes a call to
GdipCreateTextu re() method in gdiplus.dll, and, apparently, there is
some limit on the image size that the method can handle.

Obviously, I am hitting some limit of GDI+ here, but still need to
find a solution. I want to stay with .NET, if possible and avoid using
any third-party ActiveX controls.

What alternatives can I pursue?
Will going with .NET 3.x and WPF help?

TIA!
Jun 27 '08 #1
11 9809
There are no real solutions to this problem. A 32 bit process has a 2
gigabyte address limit but in reality the usable limits of memory in a .NET
program are somewhat less.

GDI+ is not well suited to dealing with large images and certainly, a 14000
by 10000 full colour image would hit the scales at a little over 534
megabytes.

An image loaded into memory may have far more memory allocated to it than
just the image file size. This is because the image itself might be held in
memory and then the raster image is also held in it's fully expanded state.
If the picture box is double buffered there may even be two full copies of
the image in memory.

--
--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.
"Usenet User" <no*****@no.way wrote in message
news:a4******** *************** *********@4ax.c om...
.NET 1.1/2.0

I have a need to display high-resolution scrollable images in a .NET
application (Windows Forms). One well known solution is to create a
Panel with AutoScroll set to "true" and then add a PictureBox or
another Panel to it, that is used to display the image.

The above approach works, however, to my surprise, .NET GDI+-based
graphics are not really hi-res friendly.

Consider the following codes examples:

1)
Bitmap b = new Bitmap( 6000, 6000 );
panel2.Backgrou ndImage = b; // <-- Works OK

2)
Bitmap b = new Bitmap( 14000, 10000 );
panel2.Backgrou ndImage = b; // <-- "Out of memory" error
The full stack of the error is:

System.OutOfMem oryException: Out of memory.
at System.Drawing. TextureBrush..c tor(Image image, WrapMode
wrapMode)
at System.Windows. Forms.Control.P aintBackground( PaintEventArgs e,
Rectangle rectangle)
at System.Windows. Forms.Control.O nPaintBackgroun d(PaintEventArg s
pevent)
at
System.Windows. Forms.Control.P aintWithErrorHa ndling(PaintEve ntArgs e,
Int16 layer, Boolean disposeEventArg s)
at System.Windows. Forms.Control.W mEraseBkgnd(Mes sage& m)
at System.Windows. Forms.Control.W ndProc(Message& m)
at System.Windows. Forms.Scrollabl eControl.WndPro c(Message& m)
at System.Windows. Forms.ControlNa tiveWindow.OnMe ssage(Message& m)
at System.Windows. Forms.ControlNa tiveWindow.WndP roc(Message& m)
at System.Windows. Forms.NativeWin dow.Callback(In tPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)
Internally, the TextureBrush constructor makes a call to
GdipCreateTextu re() method in gdiplus.dll, and, apparently, there is
some limit on the image size that the method can handle.

Obviously, I am hitting some limit of GDI+ here, but still need to
find a solution. I want to stay with .NET, if possible and avoid using
any third-party ActiveX controls.

What alternatives can I pursue?
Will going with .NET 3.x and WPF help?

TIA!
Jun 27 '08 #2
Bob Powell [MVP] wrote:
There are no real solutions to this problem. A 32 bit process has a 2
gigabyte address limit but in reality the usable limits of memory in
a .NET program are somewhat less.
At least, potential solutions such as MapViewOfFile aren't very accessible
from C#.
>
GDI+ is not well suited to dealing with large images and certainly, a
14000 by 10000 full colour image would hit the scales at a little
over 534 megabytes.

An image loaded into memory may have far more memory allocated to it
than just the image file size. This is because the image itself might
be held in memory and then the raster image is also held in it's
fully expanded state. If the picture box is double buffered there may
even be two full copies of the image in memory.

Jun 27 '08 #3
On Apr 24, 6:04 pm, "Ben Voigt [C++ MVP]" <r...@nospam.no spamwrote:
Bob Powell [MVP] wrote:
If the picture box is double buffered there may
even be two full copies of the image in memory.
The picture box is definitely double buffered. I had a similar
problem a while ago, and the solution was to change the container
control from a picture box to a user control.

Details here:
http://nomagichere.blogspot.com/2007...-creature.html

Marc
Jun 27 '08 #4
cal
I suppose it is necessary to use Windows 64bits, and forget about 32 bits.
Carlos.

"Bob Powell [MVP]" <bo*@spamkiller bobpowell.netwr ote in message
news:BC******** *************** ***********@mic rosoft.com...
There are no real solutions to this problem. A 32 bit process has a 2
gigabyte address limit but in reality the usable limits of memory in a
..NET
program are somewhat less.

GDI+ is not well suited to dealing with large images and certainly, a
14000
by 10000 full colour image would hit the scales at a little over 534
megabytes.

An image loaded into memory may have far more memory allocated to it than
just the image file size. This is because the image itself might be held
in
memory and then the raster image is also held in it's fully expanded
state.
If the picture box is double buffered there may even be two full copies of
the image in memory.

--
--
Bob Powell [MVP]
Visual C#, System.Drawing

Ramuseco Limited .NET consulting
http://www.ramuseco.com

Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm

Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm

All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.
"Usenet User" <no*****@no.way wrote in message
news:a4******** *************** *********@4ax.c om...
.NET 1.1/2.0

I have a need to display high-resolution scrollable images in a .NET
application (Windows Forms). One well known solution is to create a
Panel with AutoScroll set to "true" and then add a PictureBox or
another Panel to it, that is used to display the image.

The above approach works, however, to my surprise, .NET GDI+-based
graphics are not really hi-res friendly.

Consider the following codes examples:

1)
Bitmap b = new Bitmap( 6000, 6000 );
panel2.Backgrou ndImage = b; // <-- Works OK

2)
Bitmap b = new Bitmap( 14000, 10000 );
panel2.Backgrou ndImage = b; // <-- "Out of memory" error
The full stack of the error is:

System.OutOfMem oryException: Out of memory.
at System.Drawing. TextureBrush..c tor(Image image, WrapMode
wrapMode)
at System.Windows. Forms.Control.P aintBackground( PaintEventArgs e,
Rectangle rectangle)
at System.Windows. Forms.Control.O nPaintBackgroun d(PaintEventArg s
pevent)
at
System.Windows. Forms.Control.P aintWithErrorHa ndling(PaintEve ntArgs e,
Int16 layer, Boolean disposeEventArg s)
at System.Windows. Forms.Control.W mEraseBkgnd(Mes sage& m)
at System.Windows. Forms.Control.W ndProc(Message& m)
at System.Windows. Forms.Scrollabl eControl.WndPro c(Message& m)
at System.Windows. Forms.ControlNa tiveWindow.OnMe ssage(Message& m)
at System.Windows. Forms.ControlNa tiveWindow.WndP roc(Message& m)
at System.Windows. Forms.NativeWin dow.Callback(In tPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)
Internally, the TextureBrush constructor makes a call to
GdipCreateTextu re() method in gdiplus.dll, and, apparently, there is
some limit on the image size that the method can handle.

Obviously, I am hitting some limit of GDI+ here, but still need to
find a solution. I want to stay with .NET, if possible and avoid using
any third-party ActiveX controls.

What alternatives can I pursue?
Will going with .NET 3.x and WPF help?

TIA!

Jun 27 '08 #5
Couldn't he just copy portions of the bitmap into a picturebox through
an unsafe method with pointers ? I doubt very much he has a
14000x14000 display, so only a small rectangle of the original image
is shown at any time, and copying 4 bytes at a time is really fast.
I've done it for a graphics app, including zoom levels (by factors of
two), and you can't tell the difference with native routines.

(on a side note, if Bob hadn't written his GDI+ FAQ, my app wouldn't
even exist. My eternal thanks to you, Bob !).

Michel

On 24 avr, 19:48, Usenet User <no.s...@no.way wrote:
.NET 1.1/2.0

I have a need to display high-resolution scrollable images in a .NET
application (Windows Forms). One well known solution is to create a
Panel with AutoScroll set to "true" and then add a PictureBox or
another Panel to it, that is used to display the image.

The above approach works, however, to my surprise, .NET GDI+-based
graphics are not really hi-res friendly.

Consider the following codes examples:

1)
Bitmap b = new Bitmap( 6000, 6000 );
panel2.Backgrou ndImage = b; // <-- Works OK

2)
Bitmap b = new Bitmap( 14000, 10000 );
panel2.Backgrou ndImage = b; // <-- "Out of memory" error

The full stack of the error is:

System.OutOfMem oryException: Out of memory.
* *at System.Drawing. TextureBrush..c tor(Image image, WrapMode
wrapMode)
* *at System.Windows. Forms.Control.P aintBackground( PaintEventArgs e,
Rectangle rectangle)
* *at System.Windows. Forms.Control.O nPaintBackgroun d(PaintEventArg s
pevent)
* *at
System.Windows. Forms.Control.P aintWithErrorHa ndling(PaintEve ntArgs e,
Int16 layer, Boolean disposeEventArg s)
* *at System.Windows. Forms.Control.W mEraseBkgnd(Mes sage& m)
* *at System.Windows. Forms.Control.W ndProc(Message& m)
* *at System.Windows. Forms.Scrollabl eControl.WndPro c(Message& m)
* *at System.Windows. Forms.ControlNa tiveWindow.OnMe ssage(Message& m)
* *at System.Windows. Forms.ControlNa tiveWindow.WndP roc(Message& m)
* *at System.Windows. Forms.NativeWin dow.Callback(In tPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)

Internally, the TextureBrush constructor makes a call to
GdipCreateTextu re() method in gdiplus.dll, and, apparently, there is
some limit on the image size that the method can handle.

Obviously, I am hitting some limit of GDI+ here, but still need to
find a solution. I want to stay with .NET, if possible and avoid using
any third-party ActiveX controls.

What alternatives can I pursue?
Will going with .NET 3.x and WPF help?

TIA!
Jun 27 '08 #6
fd******@hotmai l.com wrote:
Couldn't he just copy portions of the bitmap into a picturebox through
an unsafe method with pointers ? I doubt very much he has a
14000x14000 display, so only a small rectangle of the original image
is shown at any time, and copying 4 bytes at a time is really fast.
That doesn't help much. You can't keep the whole image in memory, whether
in a Bitmap, PictureBox, or whatever. The math forbids having
32-bpp*14000x14000 (=~2GB) in a 32-bit address space where 2GB is reserved
by the kernel and some more is taken up by code and other data.

You need MapViewOfFile or AWE or something to select certain parts of the
data into your virtual address space. None of these tools are readily
available to .NET.
I've done it for a graphics app, including zoom levels (by factors of
two), and you can't tell the difference with native routines.

(on a side note, if Bob hadn't written his GDI+ FAQ, my app wouldn't
even exist. My eternal thanks to you, Bob !).

Michel

On 24 avr, 19:48, Usenet User <no.s...@no.way wrote:
>.NET 1.1/2.0

I have a need to display high-resolution scrollable images in a .NET
application (Windows Forms). One well known solution is to create a
Panel with AutoScroll set to "true" and then add a PictureBox or
another Panel to it, that is used to display the image.

The above approach works, however, to my surprise, .NET GDI+-based
graphics are not really hi-res friendly.

Consider the following codes examples:

1)
Bitmap b = new Bitmap( 6000, 6000 );
panel2.Backgro undImage = b; // <-- Works OK

2)
Bitmap b = new Bitmap( 14000, 10000 );
panel2.Backgro undImage = b; // <-- "Out of memory" error

The full stack of the error is:

System.OutOfMe moryException: Out of memory.
at System.Drawing. TextureBrush..c tor(Image image, WrapMode
wrapMode)
at System.Windows. Forms.Control.P aintBackground( PaintEventArgs e,
Rectangle rectangle)
at System.Windows. Forms.Control.O nPaintBackgroun d(PaintEventArg s
pevent)
at
System.Windows .Forms.Control. PaintWithErrorH andling(PaintEv entArgs e,
Int16 layer, Boolean disposeEventArg s)
at System.Windows. Forms.Control.W mEraseBkgnd(Mes sage& m)
at System.Windows. Forms.Control.W ndProc(Message& m)
at System.Windows. Forms.Scrollabl eControl.WndPro c(Message& m)
at System.Windows. Forms.ControlNa tiveWindow.OnMe ssage(Message& m)
at System.Windows. Forms.ControlNa tiveWindow.WndP roc(Message& m)
at System.Windows. Forms.NativeWin dow.Callback(In tPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)

Internally, the TextureBrush constructor makes a call to
GdipCreateText ure() method in gdiplus.dll, and, apparently, there is
some limit on the image size that the method can handle.

Obviously, I am hitting some limit of GDI+ here, but still need to
find a solution. I want to stay with .NET, if possible and avoid
using any third-party ActiveX controls.

What alternatives can I pursue?
Will going with .NET 3.x and WPF help?

TIA!

Jun 27 '08 #7
Usenet User wrote:
I have a need to display high-resolution scrollable images in a .NET
application (Windows Forms).
2)
Bitmap b = new Bitmap( 14000, 10000 );
panel2.Backgrou ndImage = b; // <-- "Out of memory" error
To work on a 32-bit stack, you've basically got to give up trying to
load the whole bitmap into memory. You're going to have to create a set
of filters that are able to read slices of scanlines out of the image,
possibly with extra processing to integrate zoom info, etc. In essence,
write a viewer for a model, where the model is the data on-disk. The
FileStream class works fine for multi-gigabyte files.

The image stuff in the .NET/Win32 box won't work at that scale, as we're
talking many gigabytes per image when rasterized. The Windows GDI/+
stuff is designed for images for on-screen display and printing, not so
much for totally scalable image manipulation.

If it seems like too much work / beyond your capability set, then you'll
be better off buying. You will probably be better off buying in any
case, as I assume gigapixel imaging isn't one of your business's core
competencies.

-- Barry

--
http://barrkel.blogspot.com/
Jun 27 '08 #8

"Barry Kelly" <ba***********@ gmail.comwrote in message
news:p5******** *************** *********@4ax.c om...
Ben Voigt [C++ MVP] wrote:
>Barry Kelly wrote:
Ben Voigt [C++ MVP] wrote:
[...]
Depending on the image file format, for any given cropped area, each
subsequent scan line of pixels / pixel groups will likely be very
distant in the file, many strides away. IMO a view that builds up a
screen-viewable picture, whether zoomed out (and thus an aggregate of
data) or zoomed in, is best off processing the file in a forward-only
fashion to pick up the data it needs. To get efficient scrolling, a
combination of caching and prediction would probably help.

MapViewOfFil e should gracefully degrade to this, but use memory when
possible.

MapViewOfFile will only directly help if the image is a raw bitmap and
you're displaying it with a image pixel to screen pixel ratio <= 1, and
even then it'll be limited. Since you'll need to copy each slice of
pixels into a single bitmap for actual on-screen display, you don't save
as much as you could when avoiding a copy by piggybacking the VM/FS
caching subsystem, IMO.
I was under the impression that mapped files do use the same virtual memory
code, just backed by a real file instead of the swapfile.

Jun 27 '08 #9
Ben Voigt [C++ MVP] wrote:
"Barry Kelly" <ba***********@ gmail.comwrote in message
news:p5******** *************** *********@4ax.c om...
>Ben Voigt [C++ MVP] wrote:
>>Barry Kelly wrote:
Depending on the image file format, for any given cropped area, each
subsequent scan line of pixels / pixel groups will likely be very
distant in the file, many strides away. IMO a view that builds up a
screen-viewable picture, whether zoomed out (and thus an aggregate of
data) or zoomed in, is best off processing the file in a forward-only
fashion to pick up the data it needs. To get efficient scrolling, a
combination of caching and prediction would probably help.

MapViewOfFi le should gracefully degrade to this, but use memory when
possible.

MapViewOfFil e will only directly help if the image is a raw bitmap and
you're displaying it with a image pixel to screen pixel ratio <= 1, and
even then it'll be limited. Since you'll need to copy each slice of
pixels into a single bitmap for actual on-screen display, you don't save
as much as you could when avoiding a copy by piggybacking the VM/FS
caching subsystem, IMO.

I was under the impression that mapped files do use the same virtual
memory code, just backed by a real file instead of the swapfile.
That is the only thing making sense.

But the docs only describe "what" not "how".

Arne

Jun 27 '08 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
1919
by: Steven | last post by:
Hi there, I have a list of values that I am displaying in a table (Not using a loop) I want to be able to put a graphic next to the item with the hightest price. I have all of the prices in a table. Any ideas?
2
4317
by: Bill | last post by:
I'm trying to create a form that allows me to modify the contents of list. When the user clicks on the modify button, it takes them to a page which displays the quantity of items they purchase, and allows them to update that quantity. So the quantity is shown in a textbox, and the content of the text box is drawn from a rs("content"). But the page is crashing when I run it. I'm having trouble getting the response.write textbox line to...
7
1956
by: Joe Doyle | last post by:
After connecting to the internet, after about 5 pages I get an error "ACTIVE SERVICE PAGES CANNOT BE DISPLAYED, SERVER COULD BE DOWN OR DNS ERROR........." and from there I cannot view any more pages.It seems to hang up. My connection window shows I'm still connected. If I reboot my system same thing happens. I am not sure if it is a connection issue, an internal modem issues, or a dialin issue. HELP!!!!!!
3
1561
by: Bernardo Gomes | last post by:
Hi all, I´m having trouble doing the following: I have a aspx page without any html in it, and, in the Page_Load, I call a component that returns me a XML, that I have to display in the browser. I do that by using: response.write(xml.innerxml) --> Works perfectly ( the browser shows me the xml But, if I try to use a xls to transform it, like this response.write("<?xml-stylesheet type='text/xsl' href='qp.xsl' ?>"...
2
1259
by: moumita | last post by:
I have the folowing code..the logic according to me is correct..but I dont know...the msg boxes are not displaying anything...am I supposed to change any settings ??? Public Class Form1
22
2690
by: Michael Levin | last post by:
I have a very simple page, which shows 3 Quicktime movies in a table. I think I'm using just standard simple HTML. In Netscape or Safari on a Mac, they look fine. In Internet Explorer on a PC, the bottom of the movies are cut off (size issues with the table cells). Could someone look at the html here http://server.drmichaellevin.org/worm_supplement.html and tell me why this is different on different platforms?
11
4755
by: prats | last post by:
I want to write a GUI application in PYTHON using QT. This application is supposed to take in Japanese characters. I am using PyQt as the wrapper for using QT from python. I am able to take input in japanese. But I am unable to display them back to GUI. It displays some junk characters Can anyone suggest me some way how to debug the issue. The code used for tranferring data from view to document is: " codec =...
9
1795
by: =?Utf-8?B?TWF0dE0=?= | last post by:
Is there a way to display/render an ASP page inside of an ASPX page with ASP ..Net 2.0? I'm not trying to back into frames but I have an application that will allow me to customize complex rendered reports by adding parms to the query string of an ASP page and just calling the entire URL. This works great for web parts in SharePoint and with a Windows application, but I'm not sure how to do it with ASP .Net. In fact, I'm looking for the...
1
1125
by: =?Utf-8?B?Sm9obg==?= | last post by:
Hi all, I am developing an application in asp.net, Visual C# (background) and ATL COM Component. I am using com component in asp.net page code behind (like default.aspx.cs). COM component is returning binary data in string. It has binary including null, spaces and some special characters also.
4
2509
by: trint | last post by:
I am developing a new website for our company with c# dotNet. There is no problem displaying this website with ie6. Last week I downloaded ie7 because a friend of mine said he could only see half of a particular page (not all, just this one). It is like it cuts this page in half about halfway down. The page it cuts in half is a GridView. Any help is appreciated. Thanks, Trint
0
8674
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9028
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8895
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
7728
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6518
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5860
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4619
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3046
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
2330
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.