【问题标题】:Make VScroll disabled instead of hidden in ListView使 VScroll 禁用而不是隐藏在 ListView 中
【发布时间】:2012-08-21 08:00:37
【问题描述】:

有没有办法让垂直滚动条在 ListView 中看起来被禁用而不是隐藏? 提前致谢。

【问题讨论】:

  • 听起来很像this问题。
  • @BrianS:这个问题是关于windows forms 你发布的链接,而是关于wpf
  • 哦,对不起。我需要更加关注标签。
  • 不是选项,本机控件强制关闭 WS_VSCROLL 样式。
  • 其实我可以强制但是滚动条变得没有主题。

标签: c# .net winforms winapi user-interface


【解决方案1】:

在您的设计器中在 ListView 右侧设置一个 vscrollbar 控件,并使其属性启用为 false

【讨论】:

  • 设计师无法做到,但我可以从代码中添加。问题是当真正的滚动条出现时,我有两个。我可能可以用 ClientSize canged 做点什么,但我认为有更好的方法。
  • 你可以禁用你的listview的Vscroll,只允许使用vscrollbar控件,你也可以用listview(禁用vscrollbar)和一个你将控制的vscrollbar制作一个用户控件。
【解决方案2】:

您可以通过P/Invoke 调用本机ShowScrollBar API 来强制显示滚动条:

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool ShowScrollBar(IntPtr hWnd, int wBar, [MarshalAs(UnmanagedType.Bool)] bool bShow);

【讨论】:

  • 它的广告启用滚动条,每次 Invalidate 都会消失。
  • 您也可以使用 P/Invoke 禁用滚动条。至于如何在不下降到本机代码的情况下干净地解决 Invalidate 问题......不确定。
  • 但我需要禁用外观,ShowScrollbar 只显示或隐藏它。
  • P/Invoke 到 EnableScrollBar (pinvoke.net/default.aspx/user32.enablescrollbar)。即使禁用了滚动条,它是否仍然会在失效时消失?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 2012-11-18
  • 2016-08-04
  • 1970-01-01
  • 2012-01-31
相关资源
最近更新 更多