|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Listview SubItems image indexlooking via code. Having an imagelist already, how does one set an icon for a list view's sub items? I'm using the code below however the subitems doesn't have an overload allowing an image index. Adam ***Code*** lvItem = lvControl.Items.Add(sData, 0) sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, String), "Program name", MyAccountsINIFilePath) lvItem.SubItems.Add(sData) <-------- Cannot add image index here Adam,
The simplest method to find this kind of methods is to look how it is done in the designer. Therefore create a small project, do this using the designer and see how they done it. I have not seen yet code made by the designer that was stupid done. I hope this helps, Cor Show quoteHide quote "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> schreef in bericht news:eNuSC30YGHA.5004@TK2MSFTNGP02.phx.gbl... > This is probably a silly question but oh well, I can't find the answer > looking via code. > > Having an imagelist already, how does one set an icon for a list view's > sub items? > > I'm using the code below however the subitems doesn't have an overload > allowing an image index. > > Adam > > ***Code*** > > lvItem = lvControl.Items.Add(sData, 0) > > sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, > String), "Program name", MyAccountsINIFilePath) > > lvItem.SubItems.Add(sData) <-------- Cannot add image index here > > AFAIK, .NET does not built-in support for that. As alternative, see:
ListView with Image on SubItems http://www.codeproject.com/cs/miscctrl/OAKListView.asp -- Show quoteHide quoteBest regards, Carlos J. Quintero MZ-Tools: Productivity add-ins for Visual Studio You can code, design and document much faster: http://www.mztools.com "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> escribió en el mensaje news:eNuSC30YGHA.5004@TK2MSFTNGP02.phx.gbl... > This is probably a silly question but oh well, I can't find the answer > looking via code. > > Having an imagelist already, how does one set an icon for a list view's > sub items? > > I'm using the code below however the subitems doesn't have an overload > allowing an image index. > > Adam > > ***Code*** > > lvItem = lvControl.Items.Add(sData, 0) > > sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, > String), "Program name", MyAccountsINIFilePath) > > lvItem.SubItems.Add(sData) <-------- Cannot add image index here > > Hello!
We are currently working on a PocketPC application in vb.net 2005.It is reqired that we use a ListView , but with images in the sub items. I tried the link below... http://www.codeproject.com/cs/miscctrl/OAKListView.asp I has some problems when trying to convert the c# code to VB. In particular the SendMessage() function call in the Button_clickevent throws a System.NotSupportedException ... Could anyone suggest a solution or provide a link with VB.NET coding for the above problem..? Thank You, Show quoteHide quote "Carlos J. Quintero [VB MVP]" wrote: > AFAIK, .NET does not built-in support for that. As alternative, see: > > ListView with Image on SubItems > http://www.codeproject.com/cs/miscctrl/OAKListView.asp > > -- > > Best regards, > > Carlos J. Quintero > > MZ-Tools: Productivity add-ins for Visual Studio > You can code, design and document much faster: > http://www.mztools.com > > > "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> escribió en el > mensaje news:eNuSC30YGHA.5004@TK2MSFTNGP02.phx.gbl... > > This is probably a silly question but oh well, I can't find the answer > > looking via code. > > > > Having an imagelist already, how does one set an icon for a list view's > > sub items? > > > > I'm using the code below however the subitems doesn't have an overload > > allowing an image index. > > > > Adam > > > > ***Code*** > > > > lvItem = lvControl.Items.Add(sData, 0) > > > > sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, > > String), "Program name", MyAccountsINIFilePath) > > > > lvItem.SubItems.Add(sData) <-------- Cannot add image index here > > > > > > > Hello!
We are currently working on a PocketPc application in vb.net 2005.It is reqired that we use a ListView , but with images in the sub items. I tried the link below... http://www.codeproject.com/cs/miscctrl/OAKListView.asp I has some problems when trying to convert the c# code to VB. In particular the SendMessage() function call in the Button_clickevent throws a System.NotSupportedException ... Could anyone suggest a solution or provide a link with VB.NET coding for the above problem..? Thanks, Show quoteHide quote "Adam Honek" wrote: > This is probably a silly question but oh well, I can't find the answer > looking via code. > > Having an imagelist already, how does one set an icon for a list view's sub > items? > > I'm using the code below however the subitems doesn't have an overload > allowing an image index. > > Adam > > ***Code*** > > lvItem = lvControl.Items.Add(sData, 0) > > sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, String), > "Program name", MyAccountsINIFilePath) > > lvItem.SubItems.Add(sData) <-------- Cannot add image index here > > > The following should work (hope I remembered everything). You can change
Friend to Public or so if you want: <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> Friend Structure LVITEM Friend mask As Integer Friend iItem As Integer Friend subItem As Integer Friend state As Integer Friend stateMask As Integer <MarshalAs(UnmanagedType.LPTStr)> Friend lpszText As String Friend cchTextMax As Integer Friend iImage As Integer Friend lParam As IntPtr Friend iIndent As Integer End Structure Friend Const LVM_FIRST As Integer = &H1000 Friend Const LVM_GETITEMA As Integer = LVM_FIRST + 5 Friend Const LVM_GETITEMW As Integer = LVM_FIRST + 75 Friend Shared ReadOnly LVM_GETITEM As Integer = CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_GETITEMA, LVM_GETITEMW)) Friend Const LVM_SETITEMA As Integer = LVM_FIRST + 6 Friend Const LVM_SETITEMW As Integer = LVM_FIRST + 76 Friend Shared ReadOnly LVM_SETITEM As Integer = CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_SETITEMA, LVM_SETITEMW)) Friend Const LVM_SETEXTENDEDLISTVIEWSTYLE As Integer = LVM_FIRST + 54 Friend Const LVIF_IMAGE As Integer = &H2 Friend Const LVS_EX_SUBITEMIMAGES As Integer = &H2 Friend Shared Function ListView_GetItem(ByVal hwnd As IntPtr, ByRef lvi As Win32.Native.LVITEM) As Boolean Return CBool(Win32.Native.SendMessage(hwnd, Win32.Native.LVM_GETITEM, IntPtr.Zero, lvi)) End Function Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef lParam As Win32.Native.LVITEM) As Integer Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer Friend Shared Sub ListView_SetSubItemImageIndex(ByVal hwnd As IntPtr, ByVal index As Integer, ByVal subItemIndex As Integer, ByVal imageIndex As Integer) Dim lvi As LVITEM lvi.iItem = index lvi.subItem = subItemIndex lvi.iImage = imageIndex lvi.mask = LVIF_IMAGE ListView_SetItem(hwnd, lvi) End Sub Friend Shared Function ListView_GetSubItemImageIndex(ByVal hwnd As IntPtr, ByVal index As Integer, ByVal subItemIndex As Integer) As Integer Dim lvi As LVITEM lvi.iItem = index lvi.subItem = subItemIndex lvi.mask = LVIF_IMAGE If ListView_GetItem(hwnd, lvi) Then Return lvi.iImage Else Return -1 End If End Function You need the following call to enable support for sub item images (put it in a CreateControl event handler or override) SendMessage(myListView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES) /claes Show quoteHide quote "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> wrote in message news:eNuSC30YGHA.5004@TK2MSFTNGP02.phx.gbl... > This is probably a silly question but oh well, I can't find the answer > looking via code. > > Having an imagelist already, how does one set an icon for a list view's > sub items? > > I'm using the code below however the subitems doesn't have an overload > allowing an image index. > > Adam > > ***Code*** > > lvItem = lvControl.Items.Add(sData, 0) > > sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, > String), "Program name", MyAccountsINIFilePath) > > lvItem.SubItems.Add(sData) <-------- Cannot add image index here > > Hmm I think something's missing from this code somewhere such as no
reference to Marshal??? It's odd how VB6 had icons in listview subitems but not .Net. I understand that we need to do the sendmessage() say in a form_load to activate the option in our listview in .Net as stated below but how do we actually add the image to the subitem? Do we need to call ListView_SetSubItemImageIndex() after adding the subitem to the LV as normal? Thanks, Adam Show quoteHide quote "Claes Bergefall" <louplou@nospam.nospam> wrote in message news:OMrYjc9YGHA.1888@TK2MSFTNGP02.phx.gbl... > The following should work (hope I remembered everything). You can change > Friend to Public or so if you want: > > <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> Friend > Structure LVITEM > Friend mask As Integer > Friend iItem As Integer > Friend subItem As Integer > Friend state As Integer > Friend stateMask As Integer > <MarshalAs(UnmanagedType.LPTStr)> Friend lpszText As String > Friend cchTextMax As Integer > Friend iImage As Integer > Friend lParam As IntPtr > Friend iIndent As Integer > End Structure > > Friend Const LVM_FIRST As Integer = &H1000 > Friend Const LVM_GETITEMA As Integer = LVM_FIRST + 5 > Friend Const LVM_GETITEMW As Integer = LVM_FIRST + 75 > Friend Shared ReadOnly LVM_GETITEM As Integer = > CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_GETITEMA, LVM_GETITEMW)) > Friend Const LVM_SETITEMA As Integer = LVM_FIRST + 6 > Friend Const LVM_SETITEMW As Integer = LVM_FIRST + 76 > Friend Shared ReadOnly LVM_SETITEM As Integer = > CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_SETITEMA, LVM_SETITEMW)) > > Friend Const LVM_SETEXTENDEDLISTVIEWSTYLE As Integer = LVM_FIRST + 54 > > Friend Const LVIF_IMAGE As Integer = &H2 > Friend Const LVS_EX_SUBITEMIMAGES As Integer = &H2 > > Friend Shared Function ListView_GetItem(ByVal hwnd As IntPtr, ByRef lvi As > Win32.Native.LVITEM) As Boolean > Return CBool(Win32.Native.SendMessage(hwnd, Win32.Native.LVM_GETITEM, > IntPtr.Zero, lvi)) > End Function > > Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal > hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef lParam > As Win32.Native.LVITEM) As Integer > Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal > hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal > lParam As Integer) As Integer > > Friend Shared Sub ListView_SetSubItemImageIndex(ByVal hwnd As IntPtr, > ByVal index As Integer, ByVal subItemIndex As Integer, ByVal imageIndex As > Integer) > Dim lvi As LVITEM > lvi.iItem = index > lvi.subItem = subItemIndex > lvi.iImage = imageIndex > lvi.mask = LVIF_IMAGE > ListView_SetItem(hwnd, lvi) > End Sub > > Friend Shared Function ListView_GetSubItemImageIndex(ByVal hwnd As IntPtr, > ByVal index As Integer, ByVal subItemIndex As Integer) As Integer > Dim lvi As LVITEM > lvi.iItem = index > lvi.subItem = subItemIndex > lvi.mask = LVIF_IMAGE > If ListView_GetItem(hwnd, lvi) Then > Return lvi.iImage > Else > Return -1 > End If > End Function > > > You need the following call to enable support for sub item images (put it > in a CreateControl event handler or override) > SendMessage(myListView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, > LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES) > > > /claes > > "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> wrote in message > news:eNuSC30YGHA.5004@TK2MSFTNGP02.phx.gbl... >> This is probably a silly question but oh well, I can't find the answer >> looking via code. >> >> Having an imagelist already, how does one set an icon for a list view's >> sub items? >> >> I'm using the code below however the subitems doesn't have an overload >> allowing an image index. >> >> Adam >> >> ***Code*** >> >> lvItem = lvControl.Items.Add(sData, 0) >> >> sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, >> String), "Program name", MyAccountsINIFilePath) >> >> lvItem.SubItems.Add(sData) <-------- Cannot add image index here >> >> > > "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> wrote in message Not sure what you mean. Marshal (and MarshalAs attribute) is a framework news:unRGOvAZGHA.4752@TK2MSFTNGP02.phx.gbl... > Hmm I think something's missing from this code somewhere such as no > reference to Marshal??? class > It's odd how VB6 had icons in listview subitems but not .Net. Yes> > I understand that we need to do the sendmessage() say in a form_load to > activate the option in our listview > in .Net as stated below but how do we actually add the image to the > subitem? > > Do we need to call ListView_SetSubItemImageIndex() after adding the > subitem to the LV as normal? /claes Hello!
I’m working on a Vb.net application tageting the PocketPc. So, it is required that we write the code on .NetCompactFramework. I need to create a ListView with 4 coulumns. It must have images on the first 3 columns and text on the 4th. Thank you for your code..I tried using your VB code…for my POcketPC application in VB.Net (.NetCompactFramework) But was stuck with a few errors…Can anybody help me out?? A few features like <marshal as> are not available in the ..NetCompactFrameWork. So I had to make some modifications to your code… Imports System.Runtime.InteropServices ------------------------------------------------------------------------------------------------ ‘This class has a function to return the handle to any control ‘Since mylistview.Handle is not available in .NetcompactFramework Class WinAPI Public Declare Function SetCapture Lib "coredll.dll" (ByVal hWnd As IntPtr) As IntPtr Public Declare Function GetCapture Lib "coredll.dll" () As IntPtr Public Shared Function GetHWnd(ByVal ctrl As Control) As IntPtr Dim hOldWnd As IntPtr = GetCapture() ctrl.Capture = True Dim hWnd As IntPtr = GetCapture() ctrl.Capture = False SetCapture(hOldWnd) Return hWnd End Function End Class ---------------------------------------------------------------------------------------------- Public Class Form1 Inherits System.Windows.Forms.Form Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu '<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _ Friend Structure LVITEM Friend mask As Integer Friend iItem As Integer Friend subItem As Integer Friend state As Integer Friend stateMask As Integer '<MarshalAs(UnmanagedType.LPTStr)>Friend lpszText As String ‘MARSHAL AS IS NOT SUPPORTED CAN I USE BYTE()???? Friend lpszText As Byte() Friend cchTextMax As Integer Friend iImage As Integer Friend lParam As IntPtr Friend iIndent As Integer End Structure Friend Const LVM_FIRST As Integer = &H1000 Friend Const LVM_GETITEMA As Integer = LVM_FIRST + 5 Friend Const LVM_GETITEMW As Integer = LVM_FIRST + 75 Friend Shared ReadOnly LVM_GETITEM As Integer = _ CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_GETITEMA, LVM_GETITEMW)) Friend Const LVM_SETITEMA As Integer = LVM_FIRST + 6 Friend Const LVM_SETITEMW As Integer = LVM_FIRST + 76 Friend Shared ReadOnly LVM_SETITEM As Integer = _ CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_SETITEMA, LVM_SETITEMW)) Friend Const LVM_SETEXTENDEDLISTVIEWSTYLE As Integer = LVM_FIRST + 54 Friend Const LVIF_IMAGE As Integer = &H2 Friend Const LVS_EX_SUBITEMIMAGES As Integer = &H2 Friend Shared Function ListView_GetItem(ByVal hwnd As IntPtr, ByRef lvi As LVITEM) As Boolean Return CBool(SendMessage(hwnd, LVM_GETITEM, IntPtr.Zero, lvi)) End Function Friend Overloads Declare Function SendMessage Lib "User32.dll" (ByVal _ hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef lParam _ As LVITEM) As Integer Friend Overloads Declare Function SendMessage Lib "User32.dll" (ByVal _ hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam _ As Integer) As Integer Friend Shared Sub ListView_SetSubItemImageIndex(ByVal hwnd As IntPtr, ByVal _ index As Integer, ByVal subItemIndex As Integer, ByVal imageIndex As _ Integer) Dim lvi As LVITEM lvi.iItem = index lvi.subItem = subItemIndex lvi.iImage = imageIndex lvi.mask = LVIF_IMAGE ListView_GetItem(hwnd, lvi) End Sub Friend Shared Function ListView_GetSubItemImageIndex(ByVal hwnd As IntPtr, _ ByVal index As Integer, ByVal subItemIndex As Integer) As Integer Dim lvi As LVITEM lvi.iItem = index lvi.subItem = subItemIndex lvi.mask = LVIF_IMAGE If ListView_GetItem(hwnd, lvi) Then Return lvi.iImage Else Return -1 End If End Function #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call 'ImageList '========== Dim Img As New ImageList Dim myImage As New Bitmap("/Program Files/ListView2/file.png") Img.Images.Add(myImage) 'ListView '========= Dim MyListView As New ListView MyListView.Location = New Point(0, 0) MyListView.View = View.Details MyListView.SmallImageList = Img Dim ListItem1 As New ListViewItem ListItem1.ImageIndex = 0 'How to define a subitem to be used in the call to 'ListView_GetSubItemImageIndex 'Dim ListSubItem1 As New ListViewItem.ListViewSubItem 'ListSubItem1. ‘Holds the handle to myListView Dim hMyListView As IntPtr = WinAPI.GetHWnd(MyListView) 'SendMessage(MyListView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, _ 'LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES) 'MyListView.Handle is not available, so had to use a userdefined function to obtain its handle... SendMessage(hMyListView, LVM_SETEXTENDEDLISTVIEWSTYLE, _ LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES) ListView_SetSubItemImageIndex(hMyListView, 0, 0, 0) MyListView.Visible = True End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) MyBase.Dispose(disposing) End Sub 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Private Sub InitializeComponent() Me.MainMenu1 = New System.Windows.Forms.MainMenu() Me.Menu = Me.MainMenu1 Me.Text = "Form1" End Sub #End Region End Class ================================================= On debugging…. Exception 1: SendMessage() An unhandled exception of type 'System.MissingMethodException' occurred in ListView2.exe Exception 2: ListView_GetItem() An unhandled exception of type 'System.NotSupportedException' occurred in ListView2.exe How can I use SendMessage() in the vb.net on .net compactFramework?? How to make a call to ListView_SetSubItemImageIndex() with appropriate values. Thanks for your help and valuble inputs :) LProgrammer Show quoteHide quote "Claes Bergefall" wrote: > The following should work (hope I remembered everything). You can change > Friend to Public or so if you want: > > <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> Friend > Structure LVITEM > Friend mask As Integer > Friend iItem As Integer > Friend subItem As Integer > Friend state As Integer > Friend stateMask As Integer > <MarshalAs(UnmanagedType.LPTStr)> Friend lpszText As String > Friend cchTextMax As Integer > Friend iImage As Integer > Friend lParam As IntPtr > Friend iIndent As Integer > End Structure > > Friend Const LVM_FIRST As Integer = &H1000 > Friend Const LVM_GETITEMA As Integer = LVM_FIRST + 5 > Friend Const LVM_GETITEMW As Integer = LVM_FIRST + 75 > Friend Shared ReadOnly LVM_GETITEM As Integer = > CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_GETITEMA, LVM_GETITEMW)) > Friend Const LVM_SETITEMA As Integer = LVM_FIRST + 6 > Friend Const LVM_SETITEMW As Integer = LVM_FIRST + 76 > Friend Shared ReadOnly LVM_SETITEM As Integer = > CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_SETITEMA, LVM_SETITEMW)) > > Friend Const LVM_SETEXTENDEDLISTVIEWSTYLE As Integer = LVM_FIRST + 54 > > Friend Const LVIF_IMAGE As Integer = &H2 > Friend Const LVS_EX_SUBITEMIMAGES As Integer = &H2 > > Friend Shared Function ListView_GetItem(ByVal hwnd As IntPtr, ByRef lvi As > Win32.Native.LVITEM) As Boolean > Return CBool(Win32.Native.SendMessage(hwnd, Win32.Native.LVM_GETITEM, > IntPtr.Zero, lvi)) > End Function > > Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal > hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef lParam > As Win32.Native.LVITEM) As Integer > Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal > hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam > As Integer) As Integer > > Friend Shared Sub ListView_SetSubItemImageIndex(ByVal hwnd As IntPtr, ByVal > index As Integer, ByVal subItemIndex As Integer, ByVal imageIndex As > Integer) > Dim lvi As LVITEM > lvi.iItem = index > lvi.subItem = subItemIndex > lvi.iImage = imageIndex > lvi.mask = LVIF_IMAGE > ListView_SetItem(hwnd, lvi) > End Sub > > Friend Shared Function ListView_GetSubItemImageIndex(ByVal hwnd As IntPtr, > ByVal index As Integer, ByVal subItemIndex As Integer) As Integer > Dim lvi As LVITEM > lvi.iItem = index > lvi.subItem = subItemIndex > lvi.mask = LVIF_IMAGE > If ListView_GetItem(hwnd, lvi) Then > Return lvi.iImage > Else > Return -1 > End If > End Function > > > You need the following call to enable support for sub item images (put it in > a CreateControl event handler or override) > SendMessage(myListView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, > LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES) > > > /claes > > "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> wrote in message > news:eNuSC30YGHA.5004@TK2MSFTNGP02.phx.gbl... > > This is probably a silly question but oh well, I can't find the answer > > looking via code. > > > > Having an imagelist already, how does one set an icon for a list view's > > sub items? > > > > I'm using the code below however the subitems doesn't have an overload > > allowing an image index. > > > > Adam > > > > ***Code*** > > > > lvItem = lvControl.Items.Add(sData, 0) > > > > sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, > > String), "Program name", MyAccountsINIFilePath) > > > > lvItem.SubItems.Add(sData) <-------- Cannot add image index here > > > > > > > Hi,
While trying to use your VB code, I found that you had written the SendMessage as… Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal _ hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef lParam _ As LVITEM) As Integer Using “auto†is not allowed in .NetCompactFramework… I get the error message “ The Targeted version of the .NetCompactFramework does not support using the Ansi,Auto, or Unicode modifier†So I used it as Friend Overloads Declare Function SendMessage Lib "User32.dll" (ByVal _ hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef lParam _ As LVITEM) As Integer Could My not using “auto†result in “An unhandled exception of type 'System.MissingMethodException' occurred in ListView2.exe†I’m stuck… Please shed some light on this … Thanks, Show quoteHide quote "Claes Bergefall" wrote: > The following should work (hope I remembered everything). You can change > Friend to Public or so if you want: > > <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> Friend > Structure LVITEM > Friend mask As Integer > Friend iItem As Integer > Friend subItem As Integer > Friend state As Integer > Friend stateMask As Integer > <MarshalAs(UnmanagedType.LPTStr)> Friend lpszText As String > Friend cchTextMax As Integer > Friend iImage As Integer > Friend lParam As IntPtr > Friend iIndent As Integer > End Structure > > Friend Const LVM_FIRST As Integer = &H1000 > Friend Const LVM_GETITEMA As Integer = LVM_FIRST + 5 > Friend Const LVM_GETITEMW As Integer = LVM_FIRST + 75 > Friend Shared ReadOnly LVM_GETITEM As Integer = > CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_GETITEMA, LVM_GETITEMW)) > Friend Const LVM_SETITEMA As Integer = LVM_FIRST + 6 > Friend Const LVM_SETITEMW As Integer = LVM_FIRST + 76 > Friend Shared ReadOnly LVM_SETITEM As Integer = > CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_SETITEMA, LVM_SETITEMW)) > > Friend Const LVM_SETEXTENDEDLISTVIEWSTYLE As Integer = LVM_FIRST + 54 > > Friend Const LVIF_IMAGE As Integer = &H2 > Friend Const LVS_EX_SUBITEMIMAGES As Integer = &H2 > > Friend Shared Function ListView_GetItem(ByVal hwnd As IntPtr, ByRef lvi As > Win32.Native.LVITEM) As Boolean > Return CBool(Win32.Native.SendMessage(hwnd, Win32.Native.LVM_GETITEM, > IntPtr.Zero, lvi)) > End Function > > Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal > hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef lParam > As Win32.Native.LVITEM) As Integer > Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal > hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam > As Integer) As Integer > > Friend Shared Sub ListView_SetSubItemImageIndex(ByVal hwnd As IntPtr, ByVal > index As Integer, ByVal subItemIndex As Integer, ByVal imageIndex As > Integer) > Dim lvi As LVITEM > lvi.iItem = index > lvi.subItem = subItemIndex > lvi.iImage = imageIndex > lvi.mask = LVIF_IMAGE > ListView_SetItem(hwnd, lvi) > End Sub > > Friend Shared Function ListView_GetSubItemImageIndex(ByVal hwnd As IntPtr, > ByVal index As Integer, ByVal subItemIndex As Integer) As Integer > Dim lvi As LVITEM > lvi.iItem = index > lvi.subItem = subItemIndex > lvi.mask = LVIF_IMAGE > If ListView_GetItem(hwnd, lvi) Then > Return lvi.iImage > Else > Return -1 > End If > End Function > > > You need the following call to enable support for sub item images (put it in > a CreateControl event handler or override) > SendMessage(myListView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, > LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES) > > > /claes > > "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> wrote in message > news:eNuSC30YGHA.5004@TK2MSFTNGP02.phx.gbl... > > This is probably a silly question but oh well, I can't find the answer > > looking via code. > > > > Having an imagelist already, how does one set an icon for a list view's > > sub items? > > > > I'm using the code below however the subitems doesn't have an overload > > allowing an image index. > > > > Adam > > > > ***Code*** > > > > lvItem = lvControl.Items.Add(sData, 0) > > > > sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, > > String), "Program name", MyAccountsINIFilePath) > > > > lvItem.SubItems.Add(sData) <-------- Cannot add image index here > > > > > > > Kind of hard to tell since I have no experience at all with PocketPC or the
compact framework Verify that the method is really called SendMessage (might be SendMessageA or SendMessageW) and that it really is located in user32.dll (it is on normal windows, maybe it's different on PocketPC). As for the MarshalAs attribute, just try removing it (the String datatype is still supported I hope) /claes Show quoteHide quote "LProgrammer" <LProgram***@discussions.microsoft.com> wrote in message news:DC9D8326-B363-43AF-8314-3F3BDF59A3A6@microsoft.com... > Hi, > While trying to use your VB code, I found that you had written the > SendMessage as. > > Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" (ByVal > _ > hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef > lParam _ > As LVITEM) As Integer > > Using "auto" is not allowed in .NetCompactFramework. > I get the error message > " The Targeted version of the .NetCompactFramework does not support using > the Ansi,Auto, or Unicode modifier" > > So I used it as > Friend Overloads Declare Function SendMessage Lib "User32.dll" (ByVal _ > hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef > lParam _ > As LVITEM) As Integer > > Could My not using "auto" result in "An unhandled exception of type > 'System.MissingMethodException' occurred in ListView2.exe" > > I'm stuck. Please shed some light on this . > > Thanks, > > > "Claes Bergefall" wrote: > >> The following should work (hope I remembered everything). You can change >> Friend to Public or so if you want: >> >> <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> Friend >> Structure LVITEM >> Friend mask As Integer >> Friend iItem As Integer >> Friend subItem As Integer >> Friend state As Integer >> Friend stateMask As Integer >> <MarshalAs(UnmanagedType.LPTStr)> Friend lpszText As String >> Friend cchTextMax As Integer >> Friend iImage As Integer >> Friend lParam As IntPtr >> Friend iIndent As Integer >> End Structure >> >> Friend Const LVM_FIRST As Integer = &H1000 >> Friend Const LVM_GETITEMA As Integer = LVM_FIRST + 5 >> Friend Const LVM_GETITEMW As Integer = LVM_FIRST + 75 >> Friend Shared ReadOnly LVM_GETITEM As Integer = >> CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_GETITEMA, LVM_GETITEMW)) >> Friend Const LVM_SETITEMA As Integer = LVM_FIRST + 6 >> Friend Const LVM_SETITEMW As Integer = LVM_FIRST + 76 >> Friend Shared ReadOnly LVM_SETITEM As Integer = >> CInt(IIf(Marshal.SystemDefaultCharSize = 1, LVM_SETITEMA, LVM_SETITEMW)) >> >> Friend Const LVM_SETEXTENDEDLISTVIEWSTYLE As Integer = LVM_FIRST + 54 >> >> Friend Const LVIF_IMAGE As Integer = &H2 >> Friend Const LVS_EX_SUBITEMIMAGES As Integer = &H2 >> >> Friend Shared Function ListView_GetItem(ByVal hwnd As IntPtr, ByRef lvi >> As >> Win32.Native.LVITEM) As Boolean >> Return CBool(Win32.Native.SendMessage(hwnd, Win32.Native.LVM_GETITEM, >> IntPtr.Zero, lvi)) >> End Function >> >> Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" >> (ByVal >> hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByRef >> lParam >> As Win32.Native.LVITEM) As Integer >> Friend Overloads Declare Auto Function SendMessage Lib "User32.dll" >> (ByVal >> hwnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal >> lParam >> As Integer) As Integer >> >> Friend Shared Sub ListView_SetSubItemImageIndex(ByVal hwnd As IntPtr, >> ByVal >> index As Integer, ByVal subItemIndex As Integer, ByVal imageIndex As >> Integer) >> Dim lvi As LVITEM >> lvi.iItem = index >> lvi.subItem = subItemIndex >> lvi.iImage = imageIndex >> lvi.mask = LVIF_IMAGE >> ListView_SetItem(hwnd, lvi) >> End Sub >> >> Friend Shared Function ListView_GetSubItemImageIndex(ByVal hwnd As >> IntPtr, >> ByVal index As Integer, ByVal subItemIndex As Integer) As Integer >> Dim lvi As LVITEM >> lvi.iItem = index >> lvi.subItem = subItemIndex >> lvi.mask = LVIF_IMAGE >> If ListView_GetItem(hwnd, lvi) Then >> Return lvi.iImage >> Else >> Return -1 >> End If >> End Function >> >> >> You need the following call to enable support for sub item images (put it >> in >> a CreateControl event handler or override) >> SendMessage(myListView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, >> LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES) >> >> >> /claes >> >> "Adam Honek" <AdamHo***@Webmaster2001.freeserve.co.uk> wrote in message >> news:eNuSC30YGHA.5004@TK2MSFTNGP02.phx.gbl... >> > This is probably a silly question but oh well, I can't find the answer >> > looking via code. >> > >> > Having an imagelist already, how does one set an icon for a list view's >> > sub items? >> > >> > I'm using the code below however the subitems doesn't have an overload >> > allowing an image index. >> > >> > Adam >> > >> > ***Code*** >> > >> > lvItem = lvControl.Items.Add(sData, 0) >> > >> > sData = ReadINIFileValue(INI_SECTION_TYPE1 + " " + CType(iCounter, >> > String), "Program name", MyAccountsINIFilePath) >> > >> > lvItem.SubItems.Add(sData) <-------- Cannot add image index here >> > >> > >> >> >>
Emailing with default client
Regular Expression Help...Line Break Writing INI section failing 1.1 and 2.0 .Net framework in same application? Is it possible to compile an image file into a DLL or EXE file? Dynamically reading structure fields Two way collection checking for element in xml document Desktop integrated file browser Limits of the datagrid |
|||||||||||||||||||||||