473,770 Members | 1,743 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

drawItem event

e
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.
Nov 20 '05 #1
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
Nov 20 '05 #2

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

Similar topics

0
2044
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()
0
1538
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
0
1366
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);
6
1631
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
0
1712
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.
2
8891
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.
0
2287
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
0
1138
ChristopherJohn
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...
1
2304
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
0
10257
Oralloy
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...
0
10099
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
10037
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
9904
tracyyun
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...
0
8931
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...
0
5354
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...
0
5482
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4007
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
3
2849
bsmnconsultancy
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...

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.