Click here to Skip to main content
15,895,709 members

c# user control: question about AutoScroll controls

user_code asked:

Open original thread
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
Tags: C#, User Controls, Scrollbar

Plain Text
ASM
ASP
ASP.NET
BASIC
BAT
C#
C++
COBOL
CoffeeScript
CSS
Dart
dbase
F#
FORTRAN
HTML
Java
Javascript
Kotlin
Lua
MIDL
MSIL
ObjectiveC
Pascal
PERL
PHP
PowerShell
Python
Razor
Ruby
Scala
Shell
SLN
SQL
Swift
T4
Terminal
TypeScript
VB
VBScript
XML
YAML

Preview



When answering a question please:
  1. Read the question carefully.
  2. Understand that English isn't everyone's first language so be lenient of bad spelling and grammar.
  3. If a question is poorly phrased then either ask for clarification, ignore it, or edit the question and fix the problem. Insults are not welcome.
  4. Don't tell someone to read the manual. Chances are they have and don't get it. Provide an answer or move on to the next question.
Let's work to help developers, not make them feel stupid.
Please note that all posts will be submitted under the http://www.codeproject.com/info/cpol10.aspx.



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