By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
457,712 Members | 1,413 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 457,712 IT Pros & Developers. It's quick & easy.

possible to create one control array with different controls?

P: n/a
Hello,

I have 3 textboxes and 1 combobox on a form. On entering the control I want
to select all the text. I can make an array of textboxes like this:

Dim arrTxt As TextBox() = {txt1, txt2, txt3}

Then I loop through that array

Private Sub onEntering(ByVal sender As Object, ...) Handles _
txt1.Enter,
txt2.Enter, txt3.Enter
CType(sender, TextBox).SelectAll()
End Sub

Is it possible to create a similar control array that I could stuff the
textboxes and the combobox into? If yes, how is this done? What kind of
control object could I use to hold different controls? And how do I check if
sender is a
Textbox or combobox?

If CType(sender, TextBox) = True Then...? is this doable?
If CType(sender, ComboBox) = True Then...?

Thanks,
Rich
Feb 24 '06 #1
Share this Question
Share on Google+
4 Replies


P: n/a
CMM
"Rich" <Ri**@discussions.microsoft.com> wrote in message
news:6E**********************************@microsof t.com...
Hello,

I have 3 textboxes and 1 combobox on a form. On entering the control I
want
to select all the text. I can make an array of textboxes like this:

Dim arrTxt As TextBox() = {txt1, txt2, txt3}

Then I loop through that array

Private Sub onEntering(ByVal sender As Object, ...) Handles _
txt1.Enter,
txt2.Enter, txt3.Enter
CType(sender, TextBox).SelectAll()
End Sub

Is it possible to create a similar control array that I could stuff the
textboxes and the combobox into? If yes, how is this done? What kind of
control object could I use to hold different controls?
Dim arr As Control() = {txt1, txt2, txt3}
or
Dim arr As Object() = {txt1, txt2, txt3}

And how do I check if
sender is a
Textbox or combobox?

If CType(sender, TextBox) = True Then...? is this doable?
If CType(sender, ComboBox) = True Then...?


No, you would use:

If TypeOf sender Is TextBox Then
ElseIf TypeOf sender Is ComboBox Then

Also, make sure your event handler handles the lowest common denominator in
terms of EventArgs. All EventArgs inherit from System.EventArgs... so use
that.

arr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles ...

NOT

arr_Click(ByVal sender As System.Object, ByVal e As
SomeListViewSpecialEventArgs) Handles ...
--
-C. Moya
www.cmoya.com
Feb 24 '06 #2

P: n/a
Thanks very much for your reply. Your suggestion worked perfectly!
(for posterity here is what I did)

Dim arr As Control()

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
arr = New Control() {txt1, txt2, txt3, txt4, cbo1}
End Sub

Private Overloads Sub OnEnter(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles _
txt1.Enter, txt2.Enter, txt3.Enter,
txt4.Enter, cbo1.Enter
If TypeOf sender Is TextBox Then
MessageBox.Show("Textbox " & CType(sender, TextBox).Name)
ElseIf TypeOf sender Is ComboBox Then
MessageBox.Show("Combobox " & CType(sender, ComboBox).Name)
End If
End Sub
"CMM" wrote:
"Rich" <Ri**@discussions.microsoft.com> wrote in message
news:6E**********************************@microsof t.com...
Hello,

I have 3 textboxes and 1 combobox on a form. On entering the control I
want
to select all the text. I can make an array of textboxes like this:

Dim arrTxt As TextBox() = {txt1, txt2, txt3}

Then I loop through that array

Private Sub onEntering(ByVal sender As Object, ...) Handles _
txt1.Enter,
txt2.Enter, txt3.Enter
CType(sender, TextBox).SelectAll()
End Sub

Is it possible to create a similar control array that I could stuff the
textboxes and the combobox into? If yes, how is this done? What kind of
control object could I use to hold different controls?


Dim arr As Control() = {txt1, txt2, txt3}
or
Dim arr As Object() = {txt1, txt2, txt3}

And how do I check if
sender is a
Textbox or combobox?

If CType(sender, TextBox) = True Then...? is this doable?
If CType(sender, ComboBox) = True Then...?


No, you would use:

If TypeOf sender Is TextBox Then
ElseIf TypeOf sender Is ComboBox Then

Also, make sure your event handler handles the lowest common denominator in
terms of EventArgs. All EventArgs inherit from System.EventArgs... so use
that.

arr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles ...

NOT

arr_Click(ByVal sender As System.Object, ByVal e As
SomeListViewSpecialEventArgs) Handles ...
--
-C. Moya
www.cmoya.com

Feb 24 '06 #3

P: n/a
CMM
Why not fill the array in the declaration instead of waiting until
Form_Load?

Private arr As Control() = {txt1, txt2, txt3, txt4, cbo1}

Keep in mind that your form could be fully loaded and working, but Form_Load
isn't called until it is *shown* for the first time (this behavior is
different than VB.Classic). The chances of you (some method of yours or
event or whatever) of accessing arr before that happens is great. Like this:

Dim frm as New MyForm
frm.SetSomePropertiesOfControls()
frm.Show()

Doh! Exception on SetSomeProperties(). My "arr" wasn't initialized yet!!!

Also, "Private" not "Dim" is the common convention when declaring variables
at the class level.

--
-C. Moya
www.cmoya.com
"Rich" <Ri**@discussions.microsoft.com> wrote in message
news:01**********************************@microsof t.com...
Thanks very much for your reply. Your suggestion worked perfectly!
(for posterity here is what I did)

Dim arr As Control()

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles
MyBase.Load
arr = New Control() {txt1, txt2, txt3, txt4, cbo1}
End Sub

Private Overloads Sub OnEnter(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles
_
txt1.Enter, txt2.Enter, txt3.Enter,
txt4.Enter, cbo1.Enter
If TypeOf sender Is TextBox Then
MessageBox.Show("Textbox " & CType(sender, TextBox).Name)
ElseIf TypeOf sender Is ComboBox Then
MessageBox.Show("Combobox " & CType(sender, ComboBox).Name)
End If
End Sub
"CMM" wrote:
"Rich" <Ri**@discussions.microsoft.com> wrote in message
news:6E**********************************@microsof t.com...
> Hello,
>
> I have 3 textboxes and 1 combobox on a form. On entering the control I
> want
> to select all the text. I can make an array of textboxes like this:
>
> Dim arrTxt As TextBox() = {txt1, txt2, txt3}
>
> Then I loop through that array
>
> Private Sub onEntering(ByVal sender As Object, ...) Handles _
> txt1.Enter,
> txt2.Enter, txt3.Enter
> CType(sender, TextBox).SelectAll()
> End Sub
>
> Is it possible to create a similar control array that I could stuff the
> textboxes and the combobox into? If yes, how is this done? What kind
> of
> control object could I use to hold different controls?


Dim arr As Control() = {txt1, txt2, txt3}
or
Dim arr As Object() = {txt1, txt2, txt3}

> And how do I check if
> sender is a
> Textbox or combobox?
>
> If CType(sender, TextBox) = True Then...? is this doable?
> If CType(sender, ComboBox) = True Then...?


No, you would use:

If TypeOf sender Is TextBox Then
ElseIf TypeOf sender Is ComboBox Then

Also, make sure your event handler handles the lowest common denominator
in
terms of EventArgs. All EventArgs inherit from System.EventArgs... so use
that.

arr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles ...

NOT

arr_Click(ByVal sender As System.Object, ByVal e As
SomeListViewSpecialEventArgs) Handles ...
--
-C. Moya
www.cmoya.com

Feb 24 '06 #4

P: n/a
CMM
Also the choice of name for your event handler, "OnEnter," is 100% BAD.
That's a sub of the base FORM class which is why I surmise you put
"Overloads" on (I take it the compiler complained and told you to put
"overloads" and you did it without really knowing what it meant). Why not
call your event handler something like
MyControls_Enter(...) Handles txt1.Enter, txt2.Enter ...

--
-C. Moya
www.cmoya.com
"Rich" <Ri**@discussions.microsoft.com> wrote in message
news:01**********************************@microsof t.com...
Thanks very much for your reply. Your suggestion worked perfectly!
(for posterity here is what I did)

Dim arr As Control()

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles
MyBase.Load
arr = New Control() {txt1, txt2, txt3, txt4, cbo1}
End Sub

Private Overloads Sub OnEnter(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles
_
txt1.Enter, txt2.Enter, txt3.Enter,
txt4.Enter, cbo1.Enter
If TypeOf sender Is TextBox Then
MessageBox.Show("Textbox " & CType(sender, TextBox).Name)
ElseIf TypeOf sender Is ComboBox Then
MessageBox.Show("Combobox " & CType(sender, ComboBox).Name)
End If
End Sub
"CMM" wrote:
"Rich" <Ri**@discussions.microsoft.com> wrote in message
news:6E**********************************@microsof t.com...
> Hello,
>
> I have 3 textboxes and 1 combobox on a form. On entering the control I
> want
> to select all the text. I can make an array of textboxes like this:
>
> Dim arrTxt As TextBox() = {txt1, txt2, txt3}
>
> Then I loop through that array
>
> Private Sub onEntering(ByVal sender As Object, ...) Handles _
> txt1.Enter,
> txt2.Enter, txt3.Enter
> CType(sender, TextBox).SelectAll()
> End Sub
>
> Is it possible to create a similar control array that I could stuff the
> textboxes and the combobox into? If yes, how is this done? What kind
> of
> control object could I use to hold different controls?


Dim arr As Control() = {txt1, txt2, txt3}
or
Dim arr As Object() = {txt1, txt2, txt3}

> And how do I check if
> sender is a
> Textbox or combobox?
>
> If CType(sender, TextBox) = True Then...? is this doable?
> If CType(sender, ComboBox) = True Then...?


No, you would use:

If TypeOf sender Is TextBox Then
ElseIf TypeOf sender Is ComboBox Then

Also, make sure your event handler handles the lowest common denominator
in
terms of EventArgs. All EventArgs inherit from System.EventArgs... so use
that.

arr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles ...

NOT

arr_Click(ByVal sender As System.Object, ByVal e As
SomeListViewSpecialEventArgs) Handles ...
--
-C. Moya
www.cmoya.com

Feb 25 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.