2016-06-29 10 views
1

System.Windows.Forms.Panelのスクロールバーに、垂直スクロールバーの左側に白い線が表示されているように見えました。WinFormsスクロールバーの隣にあるこの白い線を削除する方法はありますか?

Vertical scrollbar

Vertical scrollbar zoomed in

水平スクロールバーにもこれが表示されます(白い線が上に表示されます): Horizontal scrollbar

UseWindowsXPThemeがtrueに設定されている場合は、DevExpress.XtraEditors.XtraScrollableControlと気付きました。システムの問題かもしれません(これは単なる例で、私はDevExpressタグでタグ付けしていません)。

私は、Visual Studio 2015のオプション画面では、それはこの白線(左側の​​1)、そしてそれなしで(右の)とスクロールバーの例を持っていることに気付きました: VS2015 Options

私の質問です:この白い線をスクロールバーから削除する方法はありますか?もしそうなら、どうですか?私はそれがマイナーなように見えるかもしれないことを知っているが、それは迷惑になるほど目立つ。

VB.NETとC#の両方としてこの質問にタグ付けしました。どちらの言語でも回答を受け入れることができてうれしいです。

+0

あなたのアプリケーションに 'Application.EnableVisualStyles();'がありますか? –

+0

これは3Dのハイライトのようです。フラットなスタイルに設定できる場所は不明です。 – TaW

+0

'Application。'InitializeComponent()'の最初の行にEnableVisualStyles()を実行しても効果がないようです。 – Interminable

答えて

0

さて、このようhandling the Paint event for a Scrollbar controlようなものを検討していた後、私は最終的に簡単かつシンプルな(しかし、最終的には不快な)解決策を考え出しました: Labelコントロールでそれをカバーしてください!

これはPanelのために垂直および水平スクロールバーのトリックを行います:私は、他のオペレーティング・システム上で、この問題を見ていないてきたように

Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion") 
Dim operatingSystem As String = "" 

If key IsNot Nothing 
    operatingSystem = key.GetValue("ProductName") 
End If 

If operatingSystem.Contains("Windows 10") 
    Dim verticalHiderLabel As New Label With { .Location = New Point(Panel1.Right - SystemInformation.VerticalScrollBarWidth-1, Panel1.Top+1), 
               .Size = New Size(1, Panel1.Height - SystemInformation.HorizontalScrollBarHeight-1)} 

    Dim horizontalHiderLabel As New Label With {.Location = New Point(Panel1.Left+1, Panel1.Bottom - SystemInformation.HorizontalScrollBarHeight-1), 
               .Size = New Size(Panel1.Width - SystemInformation.VerticalScrollBarWidth-1, 1)} 

    Me.Controls.Add(verticalHiderLabel) 
    Me.Controls.Add(horizontalHiderLabel) 
    verticalHiderLabel.BringToFront() 
    horizontalHiderLabel.BringToFront() 
End If 

、私がしようとすることを確認するためにチェックを追加しましたそれはWindows 10で有効になっているに過ぎません。残念なことに、Windows 10では、そうでないかどうかを確認する信頼できる方法がないとわかります。

誰かがスクロールバーでサイズ変更可能なControlを使用している場合、それに応じてLabelのサイズを更新します。

0

スクロールに独自のカスタムコントロールを使用しない限り、これを行うことはできません。これは、スクロールバーの3D強調表示の効果に過ぎず、スクロールバーにはスタイルをフラットに変更するためのオーバーライドプロパティはありません。

ただし、ここで使用できるカスタムスクロールバーはいくつかあります。

CodeProject: Scrolling Panel

CodeProject: Cool Scrollbar - Scrollbar like Windows Media Player's

CodeProject: How to skin scrollbars for Panels, in C#

CodeProject: Replace a Window's Internal Scrollbar with a customdraw scrollbar Control

関連する問題