• 0

[C#] Problem with double-click on ListBox item


Question

Hi there,

I have a ListBox with a few items and at sometimes, when the ListBox only has a couple of items, you'll see a blank area after the last item because there are no more items to fill the ListBox.

Now, I've implemented the MouseDoubleClick event to get the index of the double-clicked item in the ListBox like this:

private void listNotes_MouseDoubleClick(object sender, MouseEventArgs e) {
	int noteIndex = listNotes.IndexFromPoint(e.Location);

	// DO SOMETHING ELSE...
}

However, if I double-click on that blank area, noteIndex will have the index value of the last item on the list.

I need to ignore this behavior. Any suggestions?

21 answers to this question

Recommended Posts

  • 0

You are right about something, SelectedIndex is much simpler. I don't know why I didn't use it in the first place... However, it does not solve the problem.

Double-clicking the blank area will return the index from the last item in the ListBox. Forget for a minute about the double-clicking, because that's not probably the problem. Let's say that event is not implemented, when you single-click any item in the ListBox, that item will be selected, but if you single-click on the blank area below the last item, that last item will be selected.

Conclusion, the last item is being selected when I click on the blank area, that's what I want to avoid...

  • 0
  Nazgulled said:
You are right about something, SelectedIndex is much simpler. I don't know why I didn't use it in the first place... However, it does not solve the problem.

Double-clicking the blank area will return the index from the last item in the ListBox. Forget for a minute about the double-clicking, because that's not probably the problem. Let's say that event is not implemented, when you single-click any item in the ListBox, that item will be selected, but if you single-click on the blank area below the last item, that last item will be selected.

Conclusion, the last item is being selected when I click on the blank area, that's what I want to avoid...

If I click the blank region in a listbox the last item is not selected and the selectedIndex returns -1. If there is a item selected from a previous single click then that selected index will be returned because it is the item selected, and the double click is based on clicking the listbox.

ways around would be to clear the Selected Items before you get the selectedIndex. make a copy of them before, and then re-assign them after you get the selectedIndex from the mouseClick.

That way, no interference from other events should be a problem.

  • 0

I don't understand what you are saying.

I cleared the selected items, clicked the blank area and the last item was selected...

One thing I haven't told you and maybe that's where is the problem... I'm using the KryptonListBox from the Krypton Toolkit, not the ListBox from Windows Forms. Maybe I should post this on the Krypton forums...

Thanks for all your help :)

  • 0
  Nazgulled said:
I don't understand what you are saying.

I cleared the selected items, clicked the blank area and the last item was selected...

One thing I haven't told you and maybe that's where is the problem... I'm using the KryptonListBox from the Krypton Toolkit, not the ListBox from Windows Forms. Maybe I should post this on the Krypton forums...

Thanks for all your help :)

From what I understand, you were saying that clicking a the blank area in the Listbox selects the last item. I can't recreate this behaviour using the 2008 Windows Forms version. Whether the Krypton one adds this is something to investigate.

The main problem I understand is that the double click event works, just that other event handlers and functions are getting in the way, such as single click, ect. To rectify this the only way I can think of would be to save the state of the object before the click, then clear down all selected properties, and just look at the one from the MouseEventArgs.

Then you can copy the data back in. That way, any items selected before the double click will be ignored. Of course this is catering for a very small number of possibilities..

  • 0

I don't really know what to say...

Please take a look at the attached solution. It's a very simple C# app with just the KryptonListBox. Open it, press F5 and click on the blank area. You'll see the last item getting selected...

WindowsFormsApplication1.zipFetching info...

  • 0
  Nazgulled said:
I don't really know what to say...

Please take a look at the attached solution. It's a very simple C# app with just the KryptonListBox. Open it, press F5 and click on the blank area. You'll see the last item getting selected...

Not played with C# for a while, but wouldn't you be able to hook into the ondoubleclick event on the items themselves, thus avoiding this issue?

  • 0
  DaveLegg said:
Not played with C# for a while, but wouldn't you be able to hook into the ondoubleclick event on the items themselves, thus avoiding this issue?

I tried to do this earlier but I don't its possible in C#. Played with the attached solution as well and can't really get anywhere with it.

  • 0

Oh its an custom made listbox. I played with it and the same happens so I changed "SelectionMode" to None and it works... and it doesnt. MouseDoubleClick event doesnt work only SelectedIndexChanged. I guess the creator of the control left some things out.

  • 0

I'm not sure what exactly is going on, but I tried a simple project with a listbox, a few items and subscribed to the MouseDoubleClick event, and this worked fine;

MessageBox.Show(listBox1.IndexFromPoint(e.Location).ToString());

Which is what you were using earlier, and it works on my machine. Regardless of previously selected items, if you double click in the extra space in the listbox (the area not occupied by a list item), it successfully returns -1 :s

  • 0

The author of Krypton Toolkit answered me with this:

  "Phil Wright" said:
I think the difference in behavior is because the Krypton list box is owner drawn and your standard one is not. But you can use code to work out the answer. Compare the returned item with the display rectangle of that item to ensure it really is under the mouse...

		private void kryptonListBox1_MouseDoubleClick(object sender, MouseEventArgs e)
		{
			int noteIndex = kryptonListBox1.IndexFromPoint(e.Location);
			if ((noteIndex >= 0) && (!kryptonListBox1.GetItemRectangle(noteIndex).Contains(e.Location)))
				noteIndex = -1;
		}

That would work for the MouseDoubleClick but I also have some buttons that perform actions on the selected listbox item. A single mouse click on the blank area also selects the last item. I also need to ignore this behavior... I've been trying a couple of things around the code above but haven't managed to do so, any ideas?

  • 0

I can override some if I created a class based on KryptonListBox, actually, already tried this but couldn't find a method that would help me with this problem, or I'm seeing how could I use that method to work around the problem...

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Get this massive 4TB WD_BLACK SN7100 SSD at a new all-time low price by Taras Buria Xbox owners recently received a new storage upgrade option, which allows them to equip the Xbox Series X|S with 4TB of extra space. That card, however, has an eye-watering price tag—nearly as much as the 1TB Xbox Series S. On the PC side, though, things are much better. Right now, if you need a 4TB SSD without selling a kidney, you can get the WD_BLACK SN7100 PCIe Gen4 SSD. It is now available on Amazon at a new all-time low price after a 16% discount (nearly half the cost of the new 4TB Xbox Storage Expansion Card). The SN7100 is a fast, reliable, and, more importantly, affordable Gen4 solid-state drive. Its speeds are rated up to 7,000MB/s sequential read and 6,700MB/s sequential write, while random input-output speeds are rated at 900K IOPS read and 1,350K IOPS write. These specs are not record-breaking, but they are fast enough for modern gaming (DirectStorage is supported), fast loading times in games and apps, and quick file transfer. The WD_BLACK SN7100 has a limited five-year warranty and endurance rating up to 2,400 TBW. You can monitor the health of your drive in the WD_Black Dashboard app on Windows. As for compatibility, you can use the SN7100 in any PC that accommodates M.2 2280 PCIe Gen4 drives, including PlayStation 5. It is compatible with PCIe Gen3 systems, but the maximum speeds will be limited. 4TB WD_BLACK SN7100 PCIe Gen4 Solid-State Drive - $249.99 | 16% off on Amazon US This Amazon deal is US-specific and not available in other regions unless specified. If you don't like it or want to look at more options, check out the Amazon US deals page here. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
    • Snagit 2025.2.0 by Razvan Serea Snagit is the most complete screen capture utility available. Showing someone exactly what you see on your screen is sometimes the quickest and clearest way to communicate. With Snagit, you can select anything on your screen – an area, image, article, Web page, or error message – and capture it. Then, save the screen capture to a file, send it to Snagit​'s editor to add professional effects, share it by e-mail, or drop it into PowerPoint®, Word®, or another favorite application. Capture and share images, text or video from your PC. Create beautiful presentations, flawless documentation and quickly save online content. The latest version of Snagit offers a totally new interface and workflow - making SnagIt easier for beginners to use, while still providing maximum convenience and flexibility for the screen capture experts. Snagit 2025.2.0 changelog: Edit Images from Camtasia Snagit can now be used to seamlessly edit images from Camtasia. Requires Camtasia version 2025.2.0 or later. In the Camtasia Media Bin, right-click an image and select the Edit in Snagit option. In Snagit, make your edits. When finished, click Send in the "Send changes to Camtasia" notification to replace the image on your Camtasia timeline. Step Capture Improved the Step Capture template to accommodate longer auto-populated step text. Annotations such as Callout or Arrow tool objects now anchor to and move with sections as sections are added to, reordered, or deleted from templates. Subscription Software Updated the Account dropdown to open automatically when new subscription related messages are present. Performance Improvements Improved the startup time for Snagit Capture application. Updates for IT Administrators Updated BouncyCastle.Cryptography package to address CVE-2024-29857 and CVE-2024-30172. Removed dependency on Xceed Zip. Updated LeadTools DLLs. Fixed an issue where Snagit might not recognize offline subscription activation. Fixed an issue where the video recording toolbar could be hidden from users when using Snagit in virtual environments or with remote desktop applications. Bug Fixes Fixed an issue where using Step Capture with the Share destination set to File in the Capture Window could result in data loss. Fixed a crash that could occur when capturing on some HDR monitors. Fixed an issue where the cursor object in a capture might include some of the background image in certain situations. Fixed an issue with the Box share destination to use the default browser for authentication. Fixed an issue where the Blur tool Color property could show when the blur or pixelate Type was selected. Fixed an issue where the privacy policy link in Snagit's installer might not open in the expected language. (PONRPD) Download: Snagit 64-bit | 419.0 MB (Shareware) Links: SnagIt Home Page | Release Notes Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Markdown's creator weighs in on rumored Apple Notes export feature by David Uzondu The rumor mill is churning as we draw closer to WWDC2025, and one of the interesting developments being discussed is a report from 9To5Mac that claimed Apple Notes in iOS 19 iOS 26, will finally get Markdown export capabilities. This caught the attention of many, including the person who actually invented Markdown. John Gruber, the creator of Markdown, shared his thoughts on this potential new feature on his weblog. For those who don't know, Markdown, which Gruber developed back in 2004 with significant input from Aaron Swartz (RIP!), is a lightweight markup language designed for creating formatted text using a plain text editor. Its main advantage is that it is easy to read and easy to write. When the news first broke, some interpretations suggested Apple Notes would gain full Markdown support, transforming it into an application where users could directly type and see Markdown syntax, much like how specialized editors like Obsidian operate. These tools are intended for users to work directly within the Markdown framework for all their note-taking. Gruber himself indicated that he does not believe Apple Notes should become a full-fledged "Markdown editor," even as an option. He stated that such a change would be a "huge mistake." His reasoning is rooted in his original vision for Markdown and his view of Apple Notes' purpose. He reiterated that he initially designed Markdown as a "text-to-HTML conversion tool for web writers" and for contexts requiring plain text file storage. He feels Apple Notes serves a different, valuable role with its current WYSIWYG (What You See Is What You Get) rich text editing. This interface, he argues, is excellent for quickly capturing thoughts, particularly on an iPhone, and aligns with the Macintosh philosophy of user-friendliness. He pointed out that creating a syntactically incorrect markdown is trivial, whereas a malformed note should not be possible with Apple Notes. Despite his reservations about a complete Markdown overhaul for the editing experience, Gruber finds the prospect of exporting notes in Markdown format very appealing. He wrote that this specific capability "sounds awesome." He pointed out, quite rightly, that Apple Notes' current export functions are rather limited, primarily offering PDF and Pages document formats. Adding Markdown export would provide a much more flexible way for users, especially those in the "niche" he identifies with, to move their content out of Notes and into other applications. Gruber did express curiosity about how Apple might handle images embedded in notes during a Markdown export, as image handling can be a tricky aspect of Markdown.
    • What? Every single app I've installed from the Microsoft Store comes from its intended developer and works perfectly fine. What apps do you install?
    • Microsoft Store is such a weird place filled with so much absolute garbage and with reputable apps that somehow come from questionable sources. Like, the app name is known, the images back it up but the publisher is just some weird name that's not mentioned for the apps we know.
  • Recent Achievements

    • Week One Done
      CHUNWEI earned a badge
      Week One Done
    • One Year In
      survivor303 earned a badge
      One Year In
    • Week One Done
      jbatch earned a badge
      Week One Done
    • First Post
      Yianis earned a badge
      First Post
    • Rookie
      GTRoberts went up a rank
      Rookie
  • Popular Contributors

    1. 1
      +primortal
      419
    2. 2
      +FloatingFatMan
      182
    3. 3
      snowy owl
      181
    4. 4
      ATLien_0
      176
    5. 5
      Xenon
      139
  • Tell a friend

    Love Neowin? Tell a friend!