Having a max line count in a list control
-
I have some applications that currently use a list control to display status messages from the process. As time goes by, the number of messages in the list would grow without bounds if I did not limit it. I do this by checking if adding a new message will make the line count go over the configured maximum. If so, I delete the first line in the control and then add my new line. There is no real need for the user to interact with the list other than to read it, possibly using the scroll bar. The list control has one column, wide enough for a reasonable length message. The difficulty with this is that it causes a lot of flashing of the control, whether or not I ensure that the newly added line is visible. If messages are rapidly being added to the list, the list can go completely blank for periods of time while tons of updating is going on. So what is a better way? I'm open to anything, particularly to using something other than a list control. Essentially, I'm trying to mimic how a read-only command prompt window works. Once it gets a certain number of lines in it, new lines cause old lines to disappear, with no annoying flicker. Thanks in advance.
-
I have some applications that currently use a list control to display status messages from the process. As time goes by, the number of messages in the list would grow without bounds if I did not limit it. I do this by checking if adding a new message will make the line count go over the configured maximum. If so, I delete the first line in the control and then add my new line. There is no real need for the user to interact with the list other than to read it, possibly using the scroll bar. The list control has one column, wide enough for a reasonable length message. The difficulty with this is that it causes a lot of flashing of the control, whether or not I ensure that the newly added line is visible. If messages are rapidly being added to the list, the list can go completely blank for periods of time while tons of updating is going on. So what is a better way? I'm open to anything, particularly to using something other than a list control. Essentially, I'm trying to mimic how a read-only command prompt window works. Once it gets a certain number of lines in it, new lines cause old lines to disappear, with no annoying flicker. Thanks in advance.
You may want to envelope your calls to add an item (and remove the first item when the list control is full) between a pair of
SuspendLayout()
andResumeLayout()
calls. To further increase performance, you may want to consider deleting the first n items (and not just the first item) when the list control is full. /ravi My new year's resolution: 2048 x 1536 Home | Music | Articles | Freeware | Trips ravib(at)ravib(dot)com