我在 Win7 上的 C# 2008 (Net 2.0) 中有一个系统 Windows 窗体 ListView,它有 4 列,处于详细模式,带有小图标,fullrowselection on,hideselection false,showtooltips true。
第 3 列应是唯一与右侧对齐的列,而不是像其他列一样向左对齐。我已将相应的设计器属性设置为 textalignment right 这是合乎逻辑的。但是微软在这里几乎没有让人失望:Microsoft Visual Studio 也将列标题向右对齐,这是我不想要的!只有第 3 列的所有元素都右对齐,所有列的标题文本都保持左对齐。这似乎是不可能的设计器设置。
我在 Google 中搜索了很长时间,发现了这一点 - 代码按照我想要的方式对齐我的项目,但是项目文本消失并再次出现,突出显示和选择部分不起作用 ListView 部分或整体消失,文本呈现奇怪,喜欢不尖锐等等等等 - 在我应用下面的代码后,ListView 停止了默认行为。我怎样才能在没有这些麻烦的情况下解决这个问题(Ownerdraw 将下面的代码设置为 true。我有 Fullrowselect、hideselection false 和 detailsmode)。基本上,我只需要第 3 列中的子项按我的意愿对齐,而无需更改列标题 textalignment,所有其他应为默认绘图 - 我不想更改任何绘图 - 只有对齐应该是我描述的自定义一个以上。
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
TextFormatFlags flags = TextFormatFlags.Left;
if (e.ColumnIndex == 3)
{
flags = TextFormatFlags.Right;
e.DrawText(flags);
}
else
{
e.DrawDefault = true;
}
}
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true;
}