I have an ownerdrawn listbox that paints items in various colors dependant
upon whether or not it has focus, selected, etc. The code that physically
paints the items is in the drawItem event, and it works... the items change
colors accordingly and the end result is what I expected to get. But it
feels sluggish, like it's painting redundant info or too many times, or
something.
So I carefully debugged the drawitem event and discovered that it's being
fired for *every single state change* of any item in the listbox. As an
example, when the listbox did not have focus and item 5 was already selected
in it, I clicked directly onto item 2 and the following 5 calls to drawItem
were all fired in succession (before the mouseDown event could even be
captured):
1. paint item 5, state is selected and focused
2. paint item 5, state is selected but not focused
3. paint item 5, state is not selected and not focused
4. paint item 2, state is selected but not focused
5. paint item 2, state is selected and focused
If the listbox is already focused, the results are similar (sans step 1
which is triggered by the enter event in the listbox)
The sequence makes sense, but I obviously don't need to display every step
of it and the more items I have. I'm essentially painting twice as much as I
need to and I know that's where my performance issue must be.
What's the best practice here? I'm guessing begin & endUpdate, but I'm not
sure how to implement them. These draw events seem to happen so fast
they're outside of the scope of my accessible events to place a beginUpdate
into, and I wouldn't know when to endUpdate either. 1 2701
Hi e,
One solution, which I haven't used but have heard of, is to use a timer.
This will add a delay to your painting, but hopefully not one noticeable to
the User.
Having not done it, I'm not sure whether you reset the Timer each time
your DrawItem event occurs or whether you set it off once and then draw when
it goes off. In the latter case, you may need a variable to keep track of
whether it's been started or not. There doesn't seem to be a way to ask the
Timer how long it's got to go.
Regards,
Fergus This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: pothik05 |
last post by:
I can not make the DrawItem event to work on the CheckedListBox control. I
suggestion will be highly appreciated.
I have the following code. The code works for ListBox and the second item
(Two) is displayed in red in the ListBox but the CheckedLIstBox displays
everything in black (where it should be displayed as red).
Public Sub New()
MyBase.New()
|
by: Jim H |
last post by:
I'm trying to use an owner draw ListBox by subscribing to the DrawItem event
to draw my custom control as an item in the ListBox. This event is
triggered when I drag the scroll button but NOT when I click the up/down
arrows on the scroll bar of the ListBox. How do I handle the user clicking
the up/down arrows?
Anybody have any ideas?
Jim
|
by: orekinbck |
last post by:
Hi There
I have wired up an event handler to a combo boxes DrawItem event, and I
want to draw a string that is vertically centered in the combo box.
At the moment I am doing it like this:
int centeredY = e.Bounds.Y + (int)((e.Bounds.Height -
mf.GetHeight(e.Graphics))/2);
|
by: Panos |
last post by:
Hi everyone
I'm trying to understand what property or method raises the drawitem event
of a statusbar control. I've been struggling to draw a progressbar, but i
can't make it work.
Thank u all
|
by: Paul_Madden via DotNetMonster.com |
last post by:
I am handling the Listbox DrawItem event to enable the listbox strings to be
displayed in different colours for easy reading.
Have set ScrollAlwaysVisible and HorizontalScrollbar to true.
I Anchor the listbox T, L, R, B on the parent form
The string items held within the listbox are quite big, much longer than
could be displayed within the Listbox display area.
| |
by: Paul_Madden via DotNetMonster.com |
last post by:
I am handling the Listbox DrawItem event to enable the listbox strings to be
displayed in different colours for easy reading.
Have set ScrollAlwaysVisible and HorizontalScrollbar to true.
I Anchor the listbox T, L, R, B on the parent form
The string items held within the listbox are quite big, much longer than
could be displayed within the Listbox display area.
|
by: Smokey Grindle |
last post by:
This is just a wierd one... I am trying to draw the sub items in the
drawitem event of the list view in owner drawn mode (because of documented
W32 rendering bugs) instead of in two seperate items drawitem and
drawsubitems... but when I run this code in the drawitems
For Each subItm As ListViewItem.ListViewSubItem In _tn.SubItems
' If subItm..ColumnIndex <0 Then
'If (e.State And Windows.Forms.ListViewItemStates.Selected) = 1 Then
|
by: ChristopherJohn |
last post by:
I'm new to this so if this is posted in the wrong area, please advise.
I'm using the DrawItem event to change the color of the text for the selected tab of a TabControl with the tabs on the top. The color change worx fine.
HOWEVER, The 3d line (a little white line) remains under the selected tab in the same way it appears under the unselected tabs. If you leave DrawMode at Normal, that line does not appear under the selected tab.
I hope...
|
by: raja11112222 |
last post by:
Hi
I use more than one button, For all button i use One Customize class .In there DrawItem is used to place picture in button.
My problem is for a particular button DrawItem is not called...
How can i rectify it
can any one help me.
Raja
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
|
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...
| |
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,...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
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...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
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
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |