Reputation: 1
I'm working on a Windows CE form with inside a listview this listview is composed of two text columns which represent, respectively, a numerical code and the corresponding description, for example:
Code Code Description
01 | Red lamp off
89 | stackoverflow is a cool community
03 | pump 01 on
00 | Red lamp flashing
and so on
I inserted within the form a combobox populated with numeric values in text format from "00" to "99" and a Textbox where you can write freely.
by means of two command buttons I can insert inside the listview a new combination of code/description element, modify the text of a code already inserted, or delete the entire line composed by the code and the text associated to it. listview.
'--- Functions Used by me ---
'creating a new element inside the listview
Dim ListCode As New ListViewItem("00")
ListCode.SubItems.Add("Red lamp flashing")
myListView.Items.Add(ListCode)
'deleting an element inside the listview
myListView.Items(lvPosition).Remove()
'--- 000 ---
So far so good (Bryan Adams)
The problems start now Not working on a windows form but with a Windows CE form (.net compact framework), I do not have the selectable sort property available in the visual studio properties window I need to apply a selection sorting algorithm so as to obtain the elements in ascending order:
00 | Red lamp flashing
01 | Red lamp off
03 | pump 01 on
89 | stackoverflow is a cool community
programming in visual basic .NET and not in old VB "I think" to be handling the arrays of objects and not simple strings, am I wrong?
Upvotes: 0
Views: 201
Reputation: 1
Private Sub SortListview() 'sorting elements inside the listview
Dim i, j
Dim ArrayTemp() As String = {"", ""} 'support array
For i = 0 To myListview.Items.Count - 2
For j = i + 1 To myListview.Items.Count - 1
If Val(myListview.Items.Count(i).Text) > Val(myListview.Items.Count(j).Text) Then
ArrayTemp(0) = myListview.Items.Count(i).Text
ArrayTemp(1) = myListview.Items.Count(j).SubItems(1).Text
myListview.Items.Count(j).Text = myListview.Items.Count(i).Text
myListview.Items.Count(j).SubItems(1).Text = myListview.Items.Count(i).SubItems(1).Text
myListview.Items.Count(i).Text = ArrayTemp(0)
myListview.Items.Count(i).SubItems(1).Text = ArrayTemp(1)
End If
Next
Next
End Sub
Algorithm applied to the listview and working correctly
Is there a more elegant and compact way to write this code?
Thanks for your help guys!
Upvotes: 0
Reputation: 700
this is the simplest algorithm for sorting elements in a Long Array[0..n]:
for i = 0 to n-1
for j = i + 1 to n
if myArray[i] > myArray[j] then 'swap items
k = myArray[j];
myArray[j] = myArray[i];
myArray[i] = k;
next j
next i
adapt
Upvotes: 0