How to activate the childform, arraylist, childmdifrm.Activate
(Friday, September 03, 2004)
Found the following interesting discussion in the Newsgroups:
arraylist - childmdifrm.Activate - how? by:Adda
| In a Parent mdi form I have a datagrid. I select a record from the grid and then invoke a childmdi form. I add the childmdi to an arraylist to keep track of it. If a user has selected multiple records from the grid and has multiple childmdi forms open and then re-selects a previously selected record, I want to activate that childmdi form. Suppose the arraylist contains indexes 0,1,2,3,4 (5 childmdi forms). A user re-selects a child at index 2. How can I activate that childform? Pseudocode: dim arrayfrms As New Arraylist .... arrayfrms(2).Activate
TIA Adda
| | | Reply: by:Adda
| | | Thank you all for not holding my hand on this one :). Here is what I tried that seems to work:
Dim i As Integer = arrEditNum.BinarySearch(drg1 (cma.Position, 0)) Dim frm As frmEdit = CType(arrEditfrm(i), frmEdit) frm.Activate()
So I get the position of the record on the grid from the currency manager and the ID value (at column 0 on the grid). But I am using 2 arraylists. One list contains the IDs and the 2nd arraylist contains the forms. I was thinking about creating a small class object to contain both items (ID and frm) so I could search on the ID property and then invoke/activate the frm property of my little class object in the arraylist. but back to square one:
i = arrObj(??).BinarySearch(...) Dim frm as...(arrObj(??))
Any suggestions how to get the values of my class object from the arrylist greatly appreciated.
Adda
| | | Reply: by:Marina
| | | What about using a Hashtable. You can add an ID/form pair. And that way you can index into the hashtable directly by the ID of the row, to get the corresponding form, and you don't need to keep multiple lists.
| | | Reply: by:Adda
| | | This seems like a good idea. May I ask how I retrieve the value part of the hashtable?
Dim myHT as Hashtable myHT.Add(0, child) .... myHT.Add(1, child) .... myHT.Add(2, child) ....
Now to activate child form at position 1
Dim frm As frmChild = CType(myHT(?), frmChild) frm.Activate
Thanks for your reply. Adda
| | | Reply: by:Marina
| | | You have the code correct. You would index it by the ID you gave it when you added the item. So, 0, 1, or 2 in your case, since you added 3 items, with those keys. Basically, the first parameter to Add it the key, the second is the value. So whatever the key was that you are looking for.
Hashtable has complete documentation.
| | | Reply: by:Adda
| | | This worked perfectly! Many thanks for your help.
Adda
|

|
0 Comments:
Post a Comment
<< Home