代码之家  ›  专栏  ›  技术社区  ›  caesay

setscrollpos:滚动条移动,但控制内容未更新

  •  0
  • caesay  · 技术社区  · 14 年前
    [DllImport("user32.dll")]
    public static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
    [DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
    public static extern int GetScrollPos(int hWnd, int nBar);
    

    这些是我用来移动滚动位置的外框,我要做的是,我得到当前位置,加上或减去精确数量的像素,窗体上的滚动条按我想要的方式移动,但是控件中的内容保持不变。这里有什么问题?

    1 回复  |  直到 14 年前
        1
  •  0
  •   caesay    14 年前

    我找到了正确的API调用!:)

        public void ScrollTo(int Position)
        {
            SetScrollPos((IntPtr)this.Handle, 0x1, Position, true);
            PostMessageA((IntPtr)this.Handle, 0x115, 4 + 0x10000 * Position, 0);
        }
    

    以前我只是使用setscrollpos,但是这个结合了后消息的方法非常有效。