怎样给Windows Mobile的ListView画上背景?

vbfool 2009-09-09 04:59:03
继承ListView控件,能重写OnPaintBackgound,但是似乎完全无效啊,OnPaint也没有作用,那么如何去增加呢?还是铁定无法实现?
...全文
250 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
trentliu 2009-11-02
  • 打赏
  • 举报
回复
using System;

using System.Windows.Forms;

using System.Drawing;

using System.Runtime.InteropServices;

using Microsoft.WindowsCE.Forms;



namespace ListViewBackground

{

static class Helper

{

// ListView messages

private const int LVM_FIRST = 0x1000;

private const int LVM_SETBKIMAGE = (LVM_FIRST + 138);

[Flags]

enum LVBKIF : int

{

SOURCE_NONE = 0x00000000,

SOURCE_HBITMAP = 0x00000001,

SOURCE_URL = 0x00000002,

SOURCE_MASK = 0x00000003,

STYLE_NORMAL = 0x00000000,

STYLE_TILE = 0x00000010,

STYLE_MASK = 0x00000010,

FLAG_TILEOFFSET = 0x00000100

}

class LVBKIMAGE

{

public LVBKIF ulFlags = LVBKIF.SOURCE_NONE;

public IntPtr hbm = IntPtr.Zero;

public IntPtr pszImage = IntPtr.Zero;

public uint cchImageMax = 0;

public int xOffsetPercent = 100;

public int yOffsetPercent = 100;

};

public static void SetBackgroundImage (ListView control, Bitmap bitmap)

{

LVBKIMAGE lvBkImage = new LVBKIMAGE ();

lvBkImage.ulFlags = LVBKIF.SOURCE_HBITMAP | LVBKIF.STYLE_TILE;

lvBkImage.hbm = bitmap.GetHbitmap ();

lvBkImage.cchImageMax = 0;

lvBkImage.xOffsetPercent = 0;

lvBkImage.yOffsetPercent = 0;



Message msg = Message.Create (control.Handle, (int)LVM_SETBKIMAGE, (IntPtr)0, Marshal.AllocCoTaskMem (Marshal.SizeOf (lvBkImage)));

Marshal.StructureToPtr (lvBkImage, msg.LParam, false);

MessageWindow.SendMessage (ref msg);

Marshal.FreeCoTaskMem (msg.LParam);

}

}

}
SuperTyro 2009-11-02
  • 打赏
  • 举报
回复
绘制事件
然后再绘制事件里绘制,或再数据绑定事件中绘制
就是自己去画的,用GDI+
gisyellow 2009-10-14
  • 打赏
  • 举报
回复
vbfool 2009-10-12
  • 打赏
  • 举报
回复
它不像桌面上的ListView一样提供OwnerDraw啊。
足球中国 2009-09-12
  • 打赏
  • 举报
回复
drawmode设置一下吧。
zhouyanfss 2009-09-11
  • 打赏
  • 举报
回复
友情帮顶

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧