Click here to Skip to main content
15,878,809 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
Hello,

I have defined my C# User Control with the property AutoScroll = True.
the user has an option to add images dynamically to this control, and the new image location is next to the last image, in its right side.
I do it by setting the Location property of the new image, and maintaining a variable with the next horizontal location.
I do it like this:

C#
public void AddImage(Image importedImage)
{
      MyImage myImageElement = new myImage();

      myImageElement.Location = new Point(nextImageLocationHorizontal, 0);
      ...
      ...
      HostUserControl.Controls.Add(myImageElement);
      myImageElement.BringToFront();

      nextImageLocationHorizontal += 30;

}



As I said, the control has AutoScroll set as True.

If I don't move the horizontal scroll bar, everything works fine and all the images are being put exactly at the place where they have to be.

The problem begins when I move the scroll bar to the right and add an image.
The new image location is being calculated relative to the CURRENT most left point of the control (after moving the scroll bar to the right), and not from the ABSOLUTE most left point of the control (which is the most left point before I moved the scroll bar).

In other words, instead of calculate the new location as
C#
new location = 0 + nextImageLocationHorizontal;

(while 0 is the absolute most left point)
the calculation that being made is
C#
new location = Scroll_bar_current_location + nextImageLocationHorizontal;


How can I change the calculation to be from the absolute most left point?

Thanks
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900