日期:2014-05-17  浏览次数:21713 次

C# listView 重绘问题
    我现在想将  listView  标题 设置为居中显示,下面的列表内容居左显示,我应该怎么做呢?因为只要实现这一个功能所以不想做的太麻烦,是重绘Header 么? 或者sendmessage 某个消息就可以?或者我响应列表头宽度改变的消息,修改标题名称,填写相应个空格?



------解决方案--------------------
        private void ListView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
        {
            using (StringFormat sf = new StringFormat())
            {
                sf.Alignment = StringAlignment.Center;
                e.DrawBackground();
                e.Graphics.DrawString(e.Header.Text, ListView1.Font,
                        Brushes.Black, e.Bounds, sf);
            }
        }

        private void ListView1_DrawItem(object sender, DrawListViewItemEventArgs e)
        {
            e.DrawDefault = true;
        }

        private void ListView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
        {
            e.DrawDefault = true;
        }


设置ListView的OwnerRedraw=true
添加上面三个事件处理函数,并且挂钩好。