.net 中的ListView在SubItem中添加图片的一个方法
2009-09-05 15:04
447 查看
下面是实现的部分代码:
public partial class Form1 : Form
{
//在Windwos XP下
//窗体上包含一个按钮,一个ListView,ListView中有三列,Detail模式,
public Form1()
{
InitializeComponent();
//imageList1中包含两个图片,大小为18*16;
listView1.SmallImageList = imageList1;
SendMessage(listView1.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES);
}
private const int LVM_FIRST = 0x1000;
private const int LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
private const int LVS_EX_SUBITEMIMAGES = 0x0002;
private const int LVIF_TEXT = 0x0001;
private const int LVIF_IMAGE = 0x0002;
private const int LVM_SETITEM = LVM_FIRST + 6;
private struct LV_ITEM
{
public uint mask;
public int iItem;
public int iSubItem;
public uint state;
public uint stateMask;
public IntPtr pszText;
public int cchTextMax;
public int iImage;
public IntPtr lParam;
}
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hwnd, int msg, int wParam, int lParam);
[DllImport("user32.dll", SetLastError = true)]
static extern int SendMessage(IntPtr hwnd, int msg, int wParam, ref LV_ITEM lParam);
private void button1_Click(object sender, EventArgs e)
{
ListViewItem item = new ListViewItem("大家");
item.SubItems.Add("我们");
item.SubItems.Add("他们");
listView1.Items.Add(item);
LV_ITEM lvFirst = new LV_ITEM();
lvFirst.mask = LVIF_TEXT | LVIF_IMAGE;//文本+图片
lvFirst.iItem = listView1.Items.Count - 1;//设置的某行的行号
lvFirst.iImage = 0;//imageindex
lvFirst.iSubItem = 0;//subItem Index
lvFirst.pszText = Marshal.StringToHGlobalAnsi(item.Text);//这里可以显示汉字。不能用Marshal.StringToHGlobalUni,否则不能正确显示
SendMessage(listView1.Handle, LVM_SETITEM, 0, ref lvFirst);
//第二列显示图片
LV_ITEM lvitem = new LV_ITEM();
lvitem.mask = LVIF_TEXT | LVIF_IMAGE;
lvitem.iItem = listView1.Items.Count - 1;
lvitem.iImage = 1;
lvitem.iSubItem = 1;
lvitem.pszText = Marshal.StringToHGlobalAnsi(item.SubItems[1].Text);
SendMessage(listView1.Handle, LVM_SETITEM, 0, ref lvitem);
//第三列显示
LV_ITEM lvitem2 = new LV_ITEM();
lvitem2.mask = LVIF_TEXT | LVIF_IMAGE;
lvitem2.iItem = listView1.Items.Count - 1;
lvitem2.iImage = 0;
lvitem2.iSubItem = 2;
lvitem2.pszText = Marshal.StringToHGlobalAnsi(item.SubItems[2].Text);
SendMessage(listView1.Handle, LVM_SETITEM, 0, ref lvitem2);
}
}
public partial class Form1 : Form
{
//在Windwos XP下
//窗体上包含一个按钮,一个ListView,ListView中有三列,Detail模式,
public Form1()
{
InitializeComponent();
//imageList1中包含两个图片,大小为18*16;
listView1.SmallImageList = imageList1;
SendMessage(listView1.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_SUBITEMIMAGES, LVS_EX_SUBITEMIMAGES);
}
private const int LVM_FIRST = 0x1000;
private const int LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + 54;
private const int LVS_EX_SUBITEMIMAGES = 0x0002;
private const int LVIF_TEXT = 0x0001;
private const int LVIF_IMAGE = 0x0002;
private const int LVM_SETITEM = LVM_FIRST + 6;
private struct LV_ITEM
{
public uint mask;
public int iItem;
public int iSubItem;
public uint state;
public uint stateMask;
public IntPtr pszText;
public int cchTextMax;
public int iImage;
public IntPtr lParam;
}
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hwnd, int msg, int wParam, int lParam);
[DllImport("user32.dll", SetLastError = true)]
static extern int SendMessage(IntPtr hwnd, int msg, int wParam, ref LV_ITEM lParam);
private void button1_Click(object sender, EventArgs e)
{
ListViewItem item = new ListViewItem("大家");
item.SubItems.Add("我们");
item.SubItems.Add("他们");
listView1.Items.Add(item);
LV_ITEM lvFirst = new LV_ITEM();
lvFirst.mask = LVIF_TEXT | LVIF_IMAGE;//文本+图片
lvFirst.iItem = listView1.Items.Count - 1;//设置的某行的行号
lvFirst.iImage = 0;//imageindex
lvFirst.iSubItem = 0;//subItem Index
lvFirst.pszText = Marshal.StringToHGlobalAnsi(item.Text);//这里可以显示汉字。不能用Marshal.StringToHGlobalUni,否则不能正确显示
SendMessage(listView1.Handle, LVM_SETITEM, 0, ref lvFirst);
//第二列显示图片
LV_ITEM lvitem = new LV_ITEM();
lvitem.mask = LVIF_TEXT | LVIF_IMAGE;
lvitem.iItem = listView1.Items.Count - 1;
lvitem.iImage = 1;
lvitem.iSubItem = 1;
lvitem.pszText = Marshal.StringToHGlobalAnsi(item.SubItems[1].Text);
SendMessage(listView1.Handle, LVM_SETITEM, 0, ref lvitem);
//第三列显示
LV_ITEM lvitem2 = new LV_ITEM();
lvitem2.mask = LVIF_TEXT | LVIF_IMAGE;
lvitem2.iItem = listView1.Items.Count - 1;
lvitem2.iImage = 0;
lvitem2.iSubItem = 2;
lvitem2.pszText = Marshal.StringToHGlobalAnsi(item.SubItems[2].Text);
SendMessage(listView1.Handle, LVM_SETITEM, 0, ref lvitem2);
}
}
相关文章推荐
- xheditor HTML编辑器,新闻编辑器初始方法,ajax图片批量上传,添加一个8、13、14px字体
- Android实现在一个activity中添加多个listview的方法
- 一个Itextsharp 批量添加图片到pdf 方法
- 网址前添加一个图片的方法,favicon.ico
- Extjs grid添加一个图片状态或者按钮的方法
- 在Android中ListView中添加两个点击事件,一个是OnItemClick,另一个是一个图片的OnClick事件
- android中给一个Button添加图片和文字的方法
- 在适配器的构造方法添加假数据,然后请求数据后listview等的图片显示不完整,刷新之后才显示的问题。
- listview练习,当连接类型为文本时图片地址的文本框隐藏,textbox渲染到客户端的ID不是服务端所写的clientID,只能另外添加一个属性myid
- 在Android中ListView中添加两个点击事件,一个是OnItemClick,另一个是一个图片的OnClick事件
- android开发中遇到一个图片轮播和listview的问题
- 在一个页面上根据已有的坐标添加图片,该如何处理
- QT笔记-Qt中添加背景图片的方法
- 创建一个Rectangle类,添加width和height两个成员变量 在Rectangle中添加两种方法分别计算矩形的周长和面积 编程利用Rectangle输出一个矩形的周
- Android中ListView的item中添加图片和文字
- 一个可设置背景图片的验证码图片的生成方法
- 创建一个iSCSI target时候不能添加Target IQN的解决方法
- 将一个布局添加到ListView的头部
- 把网上的图片取下来生成缩略图,以前在CSDN的一个朋友教的方法.