Vista已經引入了一個新的API,用於在列表視圖控件中沒有任何項目時顯示文本。正如MSDN庫所述,我應該處理LVN_GETEMPTYMARKUP
通知。ListView空標記文本
在繼承ListView
控制WndProc
方法重寫:
protected override void WndProc(ref Message m) {
try {
if(m.Msg == 78 /* WM_NOTIFY */) {
var nmhdr = (NMHDR)Marshal.PtrToStructure(m.LParam, typeof(NMHDR));
if(nmhdr.code == -187 /* LVN_GETEMPTYMARKUP */) {
var nmlvemptymarkup =
(NMLVEMPTYMARKUP)Marshal.PtrToStructure(m.LParam, typeof(NMLVEMPTYMARKUP));
nmlvemptymarkup.szMarkup = "The ListView is empty.";
m.Result = (IntPtr)1;
}
}
} finally {
base.WndProc(ref m);
}
}
但是,它不工作(雖然它不拋出任何異常)。其實我從來沒有得到nmhdr.code
等於-187。有任何想法嗎?
你能發佈一個鏈接到MSDN上的頁面嗎? – configurator 2008-11-13 15:52:05
http://msdn.microsoft.com/en-us/magazine/cc163384.aspx – 2008-11-13 16:30:42