473,574 Members | 2,624 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Moving listview items

Hi there,

I'm trying to implement drag-drop for my listview control in large icon
view mode. Unfortunately the order of the items gets completely messed up
upon inserting the item back into the listview, removing the item obviously
keeps everything fine but the second I use insert the item is added to the
*end* of the listview. Does anyone have any tips on how I can solve this
issue??

Call Items.Remove(So urceItem)
Call Items.Insert(0, SourceItem)
^Causes the item to be added to the end of the listview!

Thanks loads in advance.

Nick.
Nov 21 '05 #1
6 3392
ListView.Sortin g Property = SortOrder.None (default)?

"Nick" <no****@altaven te.com> schreef in bericht
news:ew******** *****@TK2MSFTNG P14.phx.gbl...
Hi there,

I'm trying to implement drag-drop for my listview control in large icon
view mode. Unfortunately the order of the items gets completely messed up
upon inserting the item back into the listview, removing the item
obviously keeps everything fine but the second I use insert the item is
added to the *end* of the listview. Does anyone have any tips on how I
can solve this issue??

Call Items.Remove(So urceItem)
Call Items.Insert(0, SourceItem)
^Causes the item to be added to the end of the listview!

Thanks loads in advance.

Nick.

Nov 21 '05 #2
Hi there,
ListView.Sortin g Property = SortOrder.None (default)?


I've tried that but it doesn't seem to have the desired effect, each of
my listview items text property is set to it's index, this occurs every time
an item is scrolled into view. I do not want any other text other than the
force index of the item to be displayed.

So when the listview attempts to sort the items I end up with the
obvious,

0, 1, 10, 100, 101, 102.... and so on and so fourth and such like.

I've just come across a method where you send the message
LVM_SETITEMPOSI TION to the listview and the item should go to the position
that you desire, and as I have AutoArrange set to True it should then be
tidied up. But unfortunately I only seem to be able to get it to go to
index 0 or 1, probably due to some issue with my routines....

'~~~~~~~~~~~~~~

<DllImport("use r32.dll", EntryPoint:="Se ndMessageA")> _
Public Shared Function sendMessage(ByV al iHandle As IntPtr, ByVal iMessage
As Integer, ByVal iWParam As Integer, ByVal iLParam As Long) As Integer
End Function

<DllImport("ker nel32.dll", EntryPoint:="Rt lMoveMemory")> _
Public Shared Sub MoveMemory(ByVa l iDestination As Integer, ByVal iSource As
Object, ByVal iLength As Integer)
End Sub

'Macros
Public Shared Function MAKELONG(ByVal iLow As Integer, ByVal iHigh As
Integer) As Long
Return (LOWORD(iLow) Or (&H10000 * LOWORD(iHigh)))
End Function

Public Shared Function LOWORD(ByVal iValue As Long) As Integer
Dim pIntRetVal As Integer
Call MoveMemory(pInt RetVal, iValue, 2)
Return (pIntRetVal)
End Function

'~~~~~~~~~~~~~~

Call Win32Utility.se ndMessage(<list view handle>, LVW_SETITEMPOSI TION, <item
index>, MAKELONG(<desti nation X>, <destination Y>))

'~~~~~~~~~~~~~~

^ Presumably this would do as I'm hoping and move the position of the
item to whereever I desire, but it doesn't seem to be doing that, any ideas
on what I might be doing wrong??

Nick.
Nov 21 '05 #3
Lol, i don't know if the following will help you but:

When I create a listview in view mode 'View.Details', the 'Items.Insert'
works correctly. However,
when I create a listview in view mode 'View.LargeIcon s', 'Items.Insert' does
not work and the listview sorts the items as it sees fit.

However ( again ), if you create a listview, set the view to 'View.Details',
insert items, add a button to your form that can switch the listview.view
mode to 'View.LargeIcon s', then the items are not sorted.

So, whenever you insert new items, turn view mode to 'View.Details' and then
turn it back...hmmm.

"Nick" <no****@altaven te.com> schreef in bericht
news:%2******** ********@TK2MSF TNGP14.phx.gbl. ..
Hi there,
ListView.Sortin g Property = SortOrder.None (default)?


I've tried that but it doesn't seem to have the desired effect, each of
my listview items text property is set to it's index, this occurs every
time an item is scrolled into view. I do not want any other text other
than the force index of the item to be displayed.

So when the listview attempts to sort the items I end up with the
obvious,

0, 1, 10, 100, 101, 102.... and so on and so fourth and such like.

I've just come across a method where you send the message
LVM_SETITEMPOSI TION to the listview and the item should go to the position
that you desire, and as I have AutoArrange set to True it should then be
tidied up. But unfortunately I only seem to be able to get it to go to
index 0 or 1, probably due to some issue with my routines....

'~~~~~~~~~~~~~~

<DllImport("use r32.dll", EntryPoint:="Se ndMessageA")> _
Public Shared Function sendMessage(ByV al iHandle As IntPtr, ByVal iMessage
As Integer, ByVal iWParam As Integer, ByVal iLParam As Long) As Integer
End Function

<DllImport("ker nel32.dll", EntryPoint:="Rt lMoveMemory")> _
Public Shared Sub MoveMemory(ByVa l iDestination As Integer, ByVal iSource
As Object, ByVal iLength As Integer)
End Sub

'Macros
Public Shared Function MAKELONG(ByVal iLow As Integer, ByVal iHigh As
Integer) As Long
Return (LOWORD(iLow) Or (&H10000 * LOWORD(iHigh)))
End Function

Public Shared Function LOWORD(ByVal iValue As Long) As Integer
Dim pIntRetVal As Integer
Call MoveMemory(pInt RetVal, iValue, 2)
Return (pIntRetVal)
End Function

'~~~~~~~~~~~~~~

Call Win32Utility.se ndMessage(<list view handle>, LVW_SETITEMPOSI TION,
<item index>, MAKELONG(<desti nation X>, <destination Y>))

'~~~~~~~~~~~~~~

^ Presumably this would do as I'm hoping and move the position of the
item to whereever I desire, but it doesn't seem to be doing that, any
ideas on what I might be doing wrong??

Nick.

Nov 21 '05 #4
Hi there,
When I create a listview in view mode 'View.Details', the 'Items.Insert'
works correctly. However,
when I create a listview in view mode 'View.LargeIcon s', 'Items.Insert'
does not work and the listview sorts the items as it sees fit.

However ( again ), if you create a listview, set the view to
'View.Details', insert items, add a button to your form that can switch
the listview.view mode to 'View.LargeIcon s', then the items are not
sorted.

So, whenever you insert new items, turn view mode to 'View.Details' and
then turn it back...hmmm.


Well that just kind of confirms where I'm at, you can't get it to put
the items in the correct order automatically. Which is pretty lame really
considering the Index of the item is actually correct when it gets added to
the end, so how an item with index 0 can appear after an item of index 160 I
don't know!! It seems pretty silly.

I'm sure the answer lies in sending the correct message and as if by
magic the item should move, it's just getting the declarations etc. correct!

Nick.
Nov 21 '05 #5
Hi again,

Strangely if I use begin and end update the item stays in it's original
position with the new index number!!! Very weird!

Nick.

"Nick" <no****@altaven te.com> wrote in message
news:%2******** *******@TK2MSFT NGP09.phx.gbl.. .
Hi there,
When I create a listview in view mode 'View.Details', the 'Items.Insert'
works correctly. However,
when I create a listview in view mode 'View.LargeIcon s', 'Items.Insert'
does not work and the listview sorts the items as it sees fit.

However ( again ), if you create a listview, set the view to
'View.Details', insert items, add a button to your form that can switch
the listview.view mode to 'View.LargeIcon s', then the items are not
sorted.

So, whenever you insert new items, turn view mode to 'View.Details' and
then turn it back...hmmm.


Well that just kind of confirms where I'm at, you can't get it to put
the items in the correct order automatically. Which is pretty lame really
considering the Index of the item is actually correct when it gets added
to the end, so how an item with index 0 can appear after an item of index
160 I don't know!! It seems pretty silly.

I'm sure the answer lies in sending the correct message and as if by
magic the item should move, it's just getting the declarations etc.
correct!

Nick.

Nov 21 '05 #6
Weyhey, I finally got the repositioning of the item to work, so in
combination with begin and end update I have a working solution. Thanks for
your help!
"Nick" <no****@altaven te.com> wrote in message
news:%2******** ********@TK2MSF TNGP14.phx.gbl. ..
Hi again,

Strangely if I use begin and end update the item stays in it's original
position with the new index number!!! Very weird!

Nick.

"Nick" <no****@altaven te.com> wrote in message
news:%2******** *******@TK2MSFT NGP09.phx.gbl.. .
Hi there,
When I create a listview in view mode 'View.Details', the 'Items.Insert'
works correctly. However,
when I create a listview in view mode 'View.LargeIcon s', 'Items.Insert'
does not work and the listview sorts the items as it sees fit.

However ( again ), if you create a listview, set the view to
'View.Details', insert items, add a button to your form that can switch
the listview.view mode to 'View.LargeIcon s', then the items are not
sorted.

So, whenever you insert new items, turn view mode to 'View.Details' and
then turn it back...hmmm.


Well that just kind of confirms where I'm at, you can't get it to put
the items in the correct order automatically. Which is pretty lame
really considering the Index of the item is actually correct when it gets
added to the end, so how an item with index 0 can appear after an item of
index 160 I don't know!! It seems pretty silly.

I'm sure the answer lies in sending the correct message and as if by
magic the item should move, it's just getting the declarations etc.
correct!

Nick.


Nov 21 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

6
4623
by: VM | last post by:
How can I fill up a listview with text file contents? My listview has two columns and the first column fills up with a while loop: while (myString != null) { myString = sr.Readline(); listView1.Items.Add (myString); } Is there a way I can fill up the second column this easily? Thw way I'm currently doing it is using the subitems...
7
6427
by: Dave Y | last post by:
I am a newbie to C# and am having trouble trying to override a ListView property method. I have created a new class derived from the Forms.Listview and I cannot figure out the syntax to override ListView.Items.Add(), . I see that it is a virtual method so it should be easy to do. If anyone can help I would appreciate it greatly. I can do what...
12
7467
by: J L | last post by:
When I fill a listview, I resize the columns to fit the data. I need to know if the data will fit vertically or if there will be a vertical scroll bar. I need to know this so I can allow for it on the overall size of the listview. My question therefore is, how can I tell if the items I have added will fit in the listview at its given...
2
1159
by: gsb58 | last post by:
Hi! This saves data from column1 in a Listview to disk like: 2005-09-20.txt I've come so far in my research: Dim fs As New FileStream("C:\" & MyCalendar.TodayDate.ToShortDateString() & ".txt", FileMode.OpenOrCreate)
5
10070
by: Phill W. | last post by:
(VB'2003) What's the correct way to remove multiple, selected items from a ListView control (say, from a ContextMenu)? I ask because I'm getting a very annoying ArgumentOutOfRangeException because the ListView seems to be trying to "re-select" items that are no longer there! for example, giventhat I have 3 items in my list: Select the...
1
2052
by: samoore33 | last post by:
I found this code on MSDN, and it works great. It creates a ListView dynamically and add items to it and all. It is great. I have changed a few of the column names to suit me. Dim listView1 As New ListView listView1.Bounds = New Rectangle(New Point(10, 10), New Size(300, 200)) ' Set the view to show details.
0
1882
by: Peter | last post by:
Hi, I have a problem with Listview using checkboxes. If i check items by code BEFORE the form is shown the Listview.Items are confused during the ItemChecked Event !!! After showing the form every thing works fine: checking items by code as well as checking with mouse: Using the CheckdItems Property is confused too.
2
6817
by: Peter | last post by:
Hi, I have a problem with Listview using checkboxes. If i check items by code BEFORE the form is shown the Listview.Items are confused during the ItemChecked Event !!! After showing the form every thing works fine: checking items by code
1
8339
by: =?Utf-8?B?UmF5IE1pdGNoZWxs?= | last post by:
Hello, In my application I need to periodically remove all current items from a ListView and add a new set into it. The following abbreviated code contains the basic idea: private void FillListViewFromFile(string path) {
0
7732
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
8063
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
0
8101
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
6456
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
1
5626
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
3754
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2249
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1347
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
1062
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.