[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

Inheriting from a vb.net combobox

Posted on 2012-03-13
9
Medium Priority
?
375 Views
Last Modified: 2012-03-14
Hi

I want to create a class from a ComboBox and modify the Add property so that when I do something like:

Me.cbMyCombo.Items.Add(objComboItem)

I can modify the data stored in the objComboItem variable within the new class.

Can anybody tell me how to do this?

John
0
Comment
Question by:IssacJones
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
9 Comments
 
LVL 17

Expert Comment

by:nepaluz
ID: 37714389
see below
Public Class MyCombo
    Inherits ComboBox
    Protected Overrides Sub SetItemCore(index As Integer, value As Object)
        MyBase.SetItemCore(index, value)

    End Sub
End Class

Open in new window

0
 

Author Comment

by:IssacJones
ID: 37714547
I've tried your suggestion but it doesn't seem to be called i.e. I placed a breakpoint there and it wasn't called.
0
 
LVL 17

Expert Comment

by:nepaluz
ID: 37714585
did you use the new combobox? e.g
Dim xCombo As New MyCombo
Form1.Controls.Add(xCombo)

Open in new window

or add the class and compile the project, then the MyCombo will appear at the top of the Toolbox.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:IssacJones
ID: 37714687
Hi

Yes, I have added the basic MyComboBox e.g.

Public Class MyComboBox
    Inherits System.Windows.Forms.ComboBox

    Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

    End Sub

   Protected Overrides Sub SetItemCore(ByVal index As Integer, ByVal value As Object)
        MyBase.SetItemCore(index, value)
    End Sub

End Class

This has been added to my solution and I have created a combo of this type.

What I want to do is when doing this (where cbMyCombo is of type MyComboBox):

Me.cbMyCombo.Items.Add(objComboItem)

is to override the Add so I can modify the objComboItem within the new class.

John
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 37717764
What do you want to achieve by overriding?
0
 

Author Comment

by:IssacJones
ID: 37718924
Hi

I have made a little more progress with the following:

Public Class ExtendedComboBox
    Inherits System.Windows.Forms.ComboBox

    Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

    End Sub

    Public Overloads ReadOnly Property Items As ComboBox.ObjectCollection
        Get
            Return MyBase.Items
        End Get
    End Property

End Class

This allows me to deal with getting the Items property. What I now need to do is deal with the Add which is called when populating the combobox e.g.

Me.cbMyCombo.Items.Add(objComboItem)

What I'm trying to do is when objComboItem is passed into the combo it may contain text. I want to remove all whitespace from the text passed in within my inherited combobox. That is, if I pass in "    a test   ", then it would be stored and displayed as "a test".

I have been able to do this externally by stripping the white space before passing it into the combo box BUT it seems more logical to me that it is done within the combo i.e. in the process of passing it into the combo box so it is done automatically. Besides, I'm intrigued on how it can be done anyway.

I looks as if the Add memeber I'm trying to override does not exist in the combobox class but rather is in a parent of the combobox i.e.

ComboBox.ObjectCollection.Add Method

If I can override this then I can strip the whitespace during the "Add" process.

Can anybody tell me how to achieve this?

John
0
 
LVL 17

Accepted Solution

by:
nepaluz earned 1200 total points
ID: 37719098
There are a few ways to skin a cat! Rather than override, why not implement your own Add method?
Public Class ExtendedComboBox
    Inherits System.Windows.Forms.ComboBox
    Sub MyAdd(ByVal Value As String)
        Me.Items.Add(Value.Trim)
    End Sub
End Class

Open in new window

0
 

Author Comment

by:IssacJones
ID: 37719296
poor cat :)

Yes, good idea!

I'm still curious how to override the Add which is built in though.
0
 
LVL 17

Expert Comment

by:nepaluz
ID: 37719407
I actually believe thats the only way to "override" it. Seems simple when you are looking for a complex solution, but that is its beauty!
0

Featured Post

Enroll in October's Free Course of the Month

Do you work with and analyze data? Enroll in October's Course of the Month for 7+ hours of SQL training, allowing you to quickly and efficiently store or retrieve data. It's free for Premium Members, Team Accounts, and Qualified Experts!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
Please read the paragraph below before following the instructions in the video — there are important caveats in the paragraph that I did not mention in the video. If your PaperPort 12 or PaperPort 14 is failing to start, or crashing, or hanging, …
Suggested Courses

649 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