Solved

ListBox Control's Intrinsic Conversion from Double to Object Problem

Posted on 2008-10-02
5
222 Views
Last Modified: 2013-12-17
Ok crowd, here is the issue. Idle_Mind and I have been dealing with another authors problem, and we have come across an interesting issue with the ListBox control. If you use the Add() method of the list box control on a Double, the lisbox's conversion from Double to Object widens the Double as expected, but unexpectedly returns junk data. To see this for yourself, add a listbox to a forn and try:

 For LoopCount As Double = 1 To 2 Step 0.1
            ListBox1.Items.Add(LoopCount)
Next

NOTE: I'm not looking for a workaround, there are any number of ways around it. This is just an academic discussion about the object itself and what the problem is or may be. If you think you know, there are points in it for you.
0
Comment
Question by:ladarling
  • 3
5 Comments
 
LVL 62

Assisted Solution

by:Fernando Soto
Fernando Soto earned 100 total points
ID: 22624856
Hi ladarling;

Not sure what issue you are having. I entered the code from your post and the results are shown below. When I selected an item I displayed its value as also shown below. Here is the code I used.

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click

        For LoopCount As Double = 1 To 2 Step 0.1
            ListBox1.Items.Add(LoopCount)
        Next

    End Sub

    Private Sub ListBox1_SelectedValueChanged(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles ListBox1.SelectedValueChanged

        Console.WriteLine(ListBox1.SelectedItem)

    End Sub

Fernando

SP32-102.jpg
SP32-103.jpg
0
 
LVL 11

Accepted Solution

by:
ladarling earned 0 total points
ID: 22625275
Not sure what issue you are having...
Notice anything different about those two results? We are trying to figure out the cause.
0
 
LVL 85

Assisted Solution

by:Mike Tomlinson
Mike Tomlinson earned 100 total points
ID: 22626320
=)

To state the problem differently, why does the Listbox display the values differently using these two snippets?...
...since the ListBox calls ToString() on each Object in its Item collection, I would expect the two to produce the same result:

Snippet A:

    For LoopCount As Double = 1 To 2 Step 0.1
        ListBox1.Items.Add(LoopCount) ' produces looooong precise values (x.000000000y) in ListBox
    Next

Snippet B:

    For LoopCount As Double = 1 To 2 Step 0.1
        ListBox1.Items.Add(LoopCount.ToString) ' produces short (x.y) values in ListBox
    Next

0
 
LVL 11

Author Comment

by:ladarling
ID: 22626943
It seems that every floating point type *except* decimal behaves this way, even 'Object' when inferred to be floating point (which is probably inferred to be a 'Single' in this context, though I am not sure). Very very odd.
For those wondering why I am bothering with this, take a read to what Idle showed me yesterday:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection.add.aspx
The screenshot below shows the different types I played with....

sshot.png
0
 
LVL 11

Author Comment

by:ladarling
ID: 22627009
What I meant to say:
 (which is probably inferred to be a 'Double' in this context, though I am not sure)
It is apparently treated as a double judging from the output, but I am willing to believe anything at this point :-)
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now