• 締切済み

Windows クラシック表示の時に VisualStyleRendererでエラーが発生しないようにしたい。

OS:Windows XP 開発環境Visual Basic 2008 お世話になります。 表題の件、下記に示しますコードが、「Windowsクラシック」表示の時において正しく処理されず、エラーが返されてしまいます。 ************************************************************** Imports System.Windows.Forms.VisualStyles Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim rOpen As VisualStyleRenderer = New VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Opened) End Sub End Class ************************************************************** 画面のプロパティにおいて「Windowsクラシック」の状態でプログラムを実行すると、 VisualStyleRenderer を new する部分で 「InvalidOperationException:現在アクティブにされているVisualスタイルがないため、Visualスタイルに関連する操作でエラーが発生しました。」 というエラーが発生します。 テーマが「Windows XP」の時には同様のエラーメッセージは表示されません。 何がしたいのかというと、 http://blogs.msdn.com/markrideout/archive/2006/01/08/510700.aspx に載っている、DataGridViewをツリー表示にするコンポーネントを利用したいのです。 先ほどのエラーが発生するコードはツリー ビュー ノードのプラス記号 (+) ボタンを表す visual スタイル要素を取得する部分で使用されています。 「Windows XP」のモードにおいては問題なく使えることがわかりましたが、 「Windowsクラシック」のモード及び OSがWindows2000の環境の場合、プログラム起動時に異常終了してしまいます。 上記の問題を解決する方法を調査しても見つけられず、困っています。 自分でできる今のところの回避手段としては、クラシック表示の場合は+-の記号は表示させないという対応をとるくらいしかできません。 この現象はバグなのでしょうか?バグなら修正してもらえるとありがたいのですが。。 (Windows Vistaだったら問題ないとか??) 仕様の場合、シンプルな回避方法はありませんでしょうか? (+のアイコンを他の手段で描画すればよいのでしょうが、これだけの為に不要な手間はかけたくないです。。) ご存知の方はどうか教えてください。 もしくは、Tree表示のできるデータグリッドのサンプルなどでもっとよいものをご存じの方はいらっしゃいませんでしょうか。 よろしくお願いします。

みんなの回答

  • isle
  • ベストアンサー率51% (77/150)
回答No.1

例外(Exception)はキャッチできます。 Try  Dim rOpen As VisualStyleRenderer = New VisualStyleRenderer(VisualStyleElement.TreeView.Glyph.Opened) Catch ex As InvalidOperationException  ' InvalidOperationExceptionが発生したときここに来る  Console.WriteLine("Exception message: {0}", ex.Message) End Try