Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 如何获取用于绘制控件的系统滚动条的事件?_Winforms_Scrollbar - Fatal编程技术网

Winforms 如何获取用于绘制控件的系统滚动条的事件?

Winforms 如何获取用于绘制控件的系统滚动条的事件?,winforms,scrollbar,Winforms,Scrollbar,我可以将系统滚动条添加到控件中,方法是重写CreateParams属性,然后添加显示系统滚动条的样式,如下所示 protected override CreateParams CreateParams { [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)] get { CreateParams cp = base.CreateParams; cp.Sty

我可以将系统滚动条添加到控件中,方法是重写CreateParams属性,然后添加显示系统滚动条的样式,如下所示

protected override CreateParams CreateParams
{
    [SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style = (cp.Style | WindowMessages.WS_HSCROLL);
        cp.Style = (cp.Style | WindowMessages.WS_VSCROLL);        
        return cp;
    }
}
它支持在我的控件中显示系统滚动条。如何获取添加的系统滚动条的绘图事件


或者是否有任何方法可以获取控件上可见系统滚动条的大小和位置

Hans Passant已经提到,启用滚动条很困难,但使用默认滚动条,您所要查找的内容是不可行的

Windows窗体应用程序中的滚动条不是由.NET Framework提供的。它们完全由窗口绘制,您无法通过常规方式更改颜色。相反,您需要做的是隐藏默认的滚动条,并用支持样式的自定义滚动条控件替换它们

这里有一个关于如何在Windows窗体应用程序中对滚动条进行蒙皮的古老但很好的教程:

在这里你可以看到结果:


没有绘画活动,很不清楚为什么你认为你需要它们。考虑一下你正在做这件事,简单地把你的控件的基类变成面板或者ScROLLabLeCon控件或者UpReCube给你免费的滚动条支持。嗨,汉斯,谢谢你的建议。我需要更改拇指的默认绘图颜色和滚动条的背景颜色。