VS 2005 Erasing Items In A Collection Using A Loop?
Jul 1, 2009
I often use a for/next loop to cycle through a collection to find a particular member of that collection based on some criteria. This works fine in every case except one: when I want to then erase the very member of the collection I just found. For example, if I wanted to give the heave-ho to every obect in a collection class that has a member veriable Color equal to Red:
[Code]...
The problem is once the collection class member is erased it makes to loop invalid because taking out the member reduces the total count of the collection in the middle of the loop. Eventually I get a "Index is out of range" error.This circumstance has bothered me every so often; I bet more experienced programmers have a different type of loop system that works better than this when you want to erase a collection member.
I want to display a list of open windows on my computer in a rich text box. So, I'm trying to store the names of all windows in myString, and then set RichTextBox1.Text = myString.
Here's the code
Imports System Imports System.Collections.Generic Imports System.Collections.ObjectModel
I would like to be able to save to a db and send task to email or as text msg for instance nevermind that.. I have two variables of type ArrayList they are "_mList1" , "_mList2" and "_mList3"
_mList1 stores the list of Telephonenumbers , _mList2 stores the list of StaffIDs and _mList3 Some concatenated string.
theses variable lists will hold some data in runtime as explained and i would like to use them to populate a DB table again mentioned
I have a Collection, the keys are strings and the values are Collections. In the sub Collections the keys are strings and values are Singles/Floats. How would I loop through all of the data? I need to get the keys and values not just the values. I've tried this but it produces a cast error:
I am trying to make a collection of controls that I can loop through. So I have this code in my form... Dim WizardFrameCollection As New Control.ControlCollection(Nothing)
I then try to add controls to the collection by I get a error "Object reference not set to an instance of an object." WizardFrameCollection.Add(Me.GroupBox1) I am not sure why I am getting this error. Groupbox1 is a groupbox that is on the form.
currently in my application I have a Global Collection that is a Collection of Collections.Currently I am trying to add items/ elements to one of the child collections of the Global Collection but I am unable to use the collections methods of the child.When I assign a variable to the child collection and return the collection it is just an object with the collection inside.
Ex: Dim GlobalCollection as New Collection Dim ChildCollection1 as New Collection Dim tempCurrentCollection[code]......
I have a simple Dictionary(of String, Object) that I need to iterate through and change items depending on some conditions.As I can't modify a collection that I'm iterating through, how do I achieve this?For example, the following obviously causes an Invalid Operation Exception:
Dim mOptions As New Dictionary(of String, Object) mOptions.Add("optA", "A") mOptions.Add("optB", "B") mOptions.Add("optC", "C")
In an application I am working on I have created a product class which represents an inventory item. I have also created an inventory class which represents a collection of product objects. In the constructor of the Inventory class I load 4 products into a product collection. Each product consists of a code, description price and quantity.
I'm trying to just iterate through this xml and grab all of its data and add it to my collection(_personOC). Right now it's not working. How can I do this without having to specify the id? All I did was make a dataset with a person table and saved it as a xml.
Public Property personOC As ObservableCollection(Of Person) Get Return _personOC
I decided to go back to the VB6 book, "Learn to Program Visual Basic Objects", so I can code it in VB2010. This has been a great learning experience. However I've run into a problem. I'm getting an error with a For....Each loop for a collection class. The error message states, Expression is of type 'China.Order', which is not a collection type." From what I've deduced the problem deals with an enumerator. I could be wrong.
I'm trying to loop through a collection object in vb2010.The code was originally used in Vb6 The book said that I needed to code a NewEnumerator method first in order to be able to loop through my collection. I coded the following:
[code]...
It gives an error for IUnknown, staging that IUnknown is not accessible in this context because it is a 'Friend'.In the line in the function I removed the Set since it's no longer needed.The error message for this line is '_NewEnum' is not a member of 'Microsoft.VisualBasic.Collection'What are these messages and how do I fix this in VB 2010?m_colCourse is not a system collection.
I am trying to use a Web Service to return Json for a Collection of Users from a Database Table. I'm only new to .NET (< 1 week experience), and I don't want to use the UpdatePanel for AJAX. I have tried using the JavaScriptSerializer as well as Json.NET to serialize. Both cases seem to spawn an Infinite Loop.[code]
Is there a way to to combine line's 1 and 2? I only want to loop through a list of the selected items in this listbox. This works just fine, I just wondered if there was a collection of selected values returned that I could use to avoid having to do it this way.
For Loop1 = 0 To MyListBox.Items.Count - 1 If MyListBox.Items(Loop1).Selected = True Then ... End Next
I have a simple subroutine that loads a list from a database. I would like to be able to use the same code to load a ListBox and a ComboBox by defining the list type as the common abstract base class ListControl, and see no reason why I can't - except that VB.NET doesn't expose/implement/whatever the Items collection in ListControl. I note with frustration that this is not the case in ASP.NET. At moment my code is ugly because I have to check what type of list control I have passed in, in order to cast it to a type that has an Items collection. (My code may be ugly for numerous other reasons too, but it is beautiful to me). Is there a way to rewrite the code to avoid having to go through the testing and casting nonsense? (I've stripped it down somewhat so that all that remains is where the problem lies).
Sub loadList(ByVal db As SqlDatabase, ByVal strCommandText As String, lstHost As ListControl, Optional bClearList As Boolean = True, Optional bIsListBox As Boolean = True) If bClearList Then
i am trying to sort the items in a collection(of T), by the start date. but i do not know how to do it. i do know that we have to implement list properties.
I have a class that represents some business object, such as this:
Public Class MyObject Inherits SomeBaseObject ' Implements INotifyPropertyChanged and IDataErrorInfo Private mMyVariable as Integer Public Property MyVariable as Integer
[code]....
SomeBaseObject implements both INotifyPropertyChanged and IDataErrorInfo, such that a Validate method will populate the appropriate IDataErrorInfo fields when setting the property values.I also have a collection that supports change events, which I eventually bind to a WPF DataGrid.
Public Class MyCollection Inherits ObservableCollection(Of MyObject) End Class
Part 1: Let's say that I have a business rule which says that no two items in my collection may have the same value for MyVariable. How do I set up my events (or implement additional interfaces somewhere) to perform this cross-item validation whenever the property value changes on any item in the collection?
Part 2: Suppose I have a list of integers such that whenever I add a new MyObject item to an instance of MyCollection or change the MyVariable property on any item already in the collection, the value of the MyVariable property must exist in this list of integers?
This is weird. I have a class that inherits from IEnumrable whose Count property is reporting 0 (zero) elements but the For Each loop steps into the loop body and tries to use the variable where it should just be moving on. My code:
On Error Resume Next Dim d As Foo For Each d In fooCollection ' use d and throws an exception Next d
Weirder still, every time d is accessed i get an exception thrown in the output window:
A first chance exception of type 'System.NullReferenceException'
but i'm not stopping on the exception (not in a try/catch block).Is "On Error Resume Next" causing this weirdness?
Weirdness found:Per Rowland's and JohnH's comments i checked the Foo class:The GetEnumerator method inside of Foo didn't actually return anything! It had an empty body. That coupled with the On Error Resume Next before the loop caused the havoc! Wow this was ugly.
I often have a class defined and I also define another class that is simply a collection of the other class. To do this I found it easiest just to define the other class as Inherits List(Of Type). The reason I define a collection class is to add extra functionality to the collection. Take the following code for example.
Class Car Property Name As String Property Year As Short
[Code]....
how can I define my own collection so that I can reference it by index or name like that. Right now I can only reference it by index.
removal of items in a collection or list using the " For Each " statement to iterate through.This code works:
For Each item As ListViewItem In ListView1.SelectedItems ListView1.Items.Remove(item) Next
This code does not:
For Each itemChecked As Object In CheckedListBox1.CheckedItems CheckedListBox1.Items.Remove(itemChecked) Next
I have been reading on this for hours today to find out why the first code block works, but the second does not.What I've learned is the "For Each" statement implements the IEnumerable interface. I have seen these terms used many times and scratched my head when it didn't make scense, then just moved along, something to strain my brain about later.Today was later...So since the IEnumerable interface is used, the .GetEnumerator method of the IEnumerable interface is called upon at the beginning of the "For Each" block, this evaluates the collection or list as in: For Each item As ListViewItem In myCollection This is done at the beginning of the iteration through the myCollection, so if the myCollection is altered as in:
For Each itemChecked As Object In myCollection CheckedListBox1.Items.Remove(itemChecked) Next
The altering of the list returns the error:List that this enumerator is bound to has been modified. An enumerator can only be used if the list does not change.
I am trying to add the file information of the contents of a folder to a collection. Although I am getting the collection to hold the correct number of items that the folder contains, all of the collection's items are the details of the last file in the folder.
I'm trying to use a loop to go through each item contained in the folder and then adding the item details to a collection with the following line
nCounter += 1 collFileDetails.Add(NameOfItem, nCounter) Next NameOfItem
I am trying to work out a way to group a collection of items like an enum so that I can access them through code else where in my program. i.e I have list of items and sub items
I am encountering an error when looping through datarows. I searched SO and tried the solutions, but no luck. Collection was modified; enumeration operation might not execute.
Dim dRow As DataRow For Each dRow In dt.Rows dt.Rows.Add(dRow("CustNum"), dRow("SalesRepName"), dRow("mgrid"), "=""" & dRow("midValue") & """", dRow("dba"), dRow("sysDate"), dRow("statusID")) Next
The error occurs the first time the code hits "Next". What would be causing Collection was modified; enumeration operation might not execute.How can I resolve this error?
I've done a little bit of LINQ but I almost exclusively return some elements from a collection based on some criteria. Now I'm trying to do something similar; let's say I have 50 winForm Controls in a collection - I want to set the .Visible property = True based on the controls name.
How would I do that? Below is my failed attempt.
myControls.AsEnumerable.Select( Function (myControl as Control) ( myControl.Visible = (myControl.Name <> "Hidden")) )
I have a ComboBox control with some items added to the items collection in design mode. What I want is when an item is picked from the ComboBox a different value is actually used in the code, instead of what is displayed. I am aware of the DisplayMember & ValueMember properties, but I'm not sure if that is what I need to use. All the examples I found were for bound data.
I have a problem getting the collection of items in the ItemMouseHover event. I want to get the collection of all the items and subitems when the Mouse Hovers in the ListView. I have the property of Full Row select in the ListView.
i have a problem getting the collection of items in the ItemMouseHover event. I want to get the collection of all the items and subitems when the Mouse Hovers in the ListView. I have the property of Full Row select in the ListView.