更改对齐方式后如何重绘列表控件?

Posted

技术标签:

【中文标题】更改对齐方式后如何重绘列表控件?【英文标题】:How can a list-control be redrawn after changing its alignment style? 【发布时间】:2012-03-09 17:29:02 【问题描述】:

我正在尝试找出一种在更改对齐样式 (LVS_ALIGNTOP / LVS_ALIGNLEFT) 后刷新/更新/重绘列表控件的方法。

如果我将样式从图标/小模式更改为其他样式,然后再改回来,它有时会起作用(仅在单击时,以编程方式更改似乎即使有延迟也不起作用)。即便如此,这充其量也很笨拙(更不用说丑陋/闪烁),所以我更愿意找到更好(更合适,更正确?)的方法。

我尝试了列表控件的UpdateWindowRedrawWindowInvalidateRedrawItemsUpdate...除了更改显示模式之外似乎没有任何效果。

【问题讨论】:

你有没有得出结论? 【参考方案1】:

我已经成功使用 CListCtrl.Update() 方法解决了这个问题。

即:

for (int z=0;z<m_listCtrl.GetItemCount();z++)

    m_listCtrl.Update(z);

【讨论】:

好吧,我已经表明我已经尝试过Update。我真的不记得遇到这个问题时我在做什么项目,但我会尝试找出并测试是否可能在循环中执行它是诀窍(当然假设我没有已经)。 好吧,我找到了这个项目,我循环尝试了它,但它不起作用;列表控件保持之前的对齐方式。【参考方案2】:

找出你必须做的,

m_listCtrl.Arrange(LVA_DEFAULT);

您可能需要将LVA_DEFAULT 更改为您的特定要求。见this

【讨论】:

【参考方案3】:
RedrawItems(0, GetItemCount() - 1);
UpdateWindow();

【讨论】:

你读过这个问题吗?我明确表示我已经尝试过了。

以上是关于更改对齐方式后如何重绘列表控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改自动生成的列文本对齐方式

如何更改 Highchart 中图例的布局和对齐方式?

如何根据 Vuetify 中的屏幕大小更改对齐方式?

如何从底部到顶部更改 Android Snackbar 的初始对齐方式?

如何在列表视图中以不同方式对齐标签

iOS 中UI控件的各种对齐方式总结