Windows XP の機能と Windows フォーム コントロール

更新 : 2007 年 11 月

Microsoft® Windows® XP は、Windows フォームの作成時に利用できる次の新機能を搭載しています。

  • ユーザー インターフェイス (UI) の新しい外観と動作

  • ListView コントロールの新しいビュー

  • ユーザーの簡易切り替え

Windows XP におけるユーザー インターフェイスの変更

Windows XP のリリースでは、Windows ユーザー インターフェイスに新しい外観と動作が導入されました。Visual Studio .NET に含まれているのと同じ機能コントロールで構成される Windows XP の UI は、外観が更新されています。Windows XP の機能強化の例を 2 つ挙げると、1 つは、マウスを配置すると明るくなる、角の丸いコントロール、もう 1 つは、カラフルな ProgressBar コントロールです。

"visual スタイル" を有効にしたときの Windows XP でのサンプルのフォームとコントロールの外観
WinXPConAfter スクリーンショット

06da8ztk.alert_note(ja-jp,VS.90).gifメモ :

ここで説明する機能は、Windows XP オペレーティング システム上で実行されるアプリケーションのみに適用されます。Windows XP 以外のプラットフォームでアプリケーションを実行すると、コントロールは従来の外観を保持し、visual スタイルに関連するコードはすべて無効になります。

対照的に、Visual Studio で開発者に提供されるコントロールは、同じコントロールの場合でも外観が異なります。

Visual Studio で作成したときのサンプルのフォームとコントロールの既定の外観
WinXPConBefore スクリーンショット

フォームは、クライアント領域および非クライアント領域という 2 つの部分から構成されると考えることができます。Windows XP オペレーティング システムで動作するすべてのアプリケーションには、ウィンドウ枠、タイトル バー、および非クライアント スクロール バーを含む非クライアント領域があります。Windows XP では、既定で非クライアント領域に visual スタイルが適用されるため、Windows フォームを Windows XP で実行すると、更新されたタイトル バーとスクロール バーが表示されます。ここでは、クライアント領域を変更する方法について説明します。

visual スタイル

visual スタイルとは、ユーザーが変更できる、アプリケーションやオペレーティング システムのユーザー インターフェイスの外観です。既に述べたように、Windows XP でフォームを実行すると、すぐにフォームのスクロール バーとタイトル バーが変更されます。Windows XP での実行時には、アプリケーションが EnableVisualStyles メソッドを呼び出すと、ほとんどの Windows フォーム コントロールが visual スタイルを自動的に採用します。詳細については、「方法 : Windows XP の visual スタイルを有効にする」を参照してください。

Windows フォーム コントロールには、すべてのオペレーティング システムで同じ外観を保持するものがいくつかあり、EnableVisualStyles を実装しても、これらのコントロールは影響を受けません。たとえば、LabelLinkLabelDomainUpDownNumericUpDown、および CheckedListBox の各コントロールなどです。

Windows XP ListView スタイル

UI の新しい外観に加え、Windows XP では、ListView コントロール用として、Windows エクスプローラの右側のパネルに表示されるような、次の 2 つの新しいスタイルも導入されています。

  • グループ ビュー

  • 並べて表示ビュー

Windows XP の ListView コントロールのグループ化機能を使用すると、論理的に関連する項目をまとめて表示できます。これらのグループは、画面上で、タイトルを含む水平方向のグループ ヘッダーで区切られます。

Windows XP より以前のプラットフォームでは、グループは表示されません。すべての項目が通常どおりに表示されます。詳細については、「方法 : Windows フォーム ListView コントロールの項目をグループ化する」を参照してください。

挿入マークは、ドラッグした項目が配置される場所をユーザーに知らせるマークです。ListView コントロールの AutoArrange プロパティに false を設定すると、挿入マークが表示されます。ユーザーが項目を他の 2 つの項目の間にドラッグすると、この項目が新しく配置される場所が挿入マークによって示されます。

Windows XP より以前のプラットフォームでは、挿入マークは表示されず、挿入マークのプロパティとメソッドを呼び出しても無効になります。詳細については、「方法 : Windows フォーム ListView コントロールに挿入マークを表示する」を参照してください。

ListView コントロールの並べて表示ビュー機能を使用すると、グラフィカルな情報とテキスト情報をバランスよく表示できます。並べて表示ビューの項目で表示されるテキスト情報は、詳細表示用に定義されている列情報と同じ情報です。並べて表示ビューは、ListView コントロールのグループ化機能または挿入マーク機能のいずれかと組み合わせて使用できます。並べて表示ビューでは、サイズが 32 × 32 のアイコンと数行のテキストを使用します。

並べて表示ビューのプロパティとメソッドを使用すると、各項目をどの列フィールドに表示するのかを指定でき、並べて表示ビュー ウィンドウ内の全項目のサイズと外観をまとめて制御できます。また、並べて表示ビューでは、テキストの最初の行は常に項目の名前になります。

Windows XP より以前のプラットフォームでは、ListView は LargeIcon ビューで表示されます。詳細については、「方法 : Windows フォーム ListView コントロールの "並べて表示" ビューを有効にする」を参照してください。

Windows XP におけるユーザーの簡易切り替え

Windows XP では、ユーザーの簡易切り替えが導入されています。この機能により、複数のユーザーがコンピュータを共有し、各自が実行しているプログラムを終了せずにユーザー セッションを切り替えることができます。.NET Framework は、現在のユーザーが切り替わったときに発生する SessionSwitch イベントを提供します。

06da8ztk.alert_note(ja-jp,VS.90).gifメモ :

SessionSwitch イベントは Windows XP だけに適用され、SessionSwitch イベント ハンドラのコードは、XP 以外のプラットフォームで実行した場合無視されます。

次のコードは、SessionSwitch イベントの発生時にデータをログに書き込む方法を示しています。

Private Sub SessionSwitch(ByVal sender As System.Object, ByVal e As _
Microsoft.Win32.SessionSwitchEventArgs)
    If e.Reason = SessionSwitchReason.SessionLogon Then
        My.Computer.EventLogs.Application.WriteEntry( _
My.User.Username.ToString & " logged on at " & _
My.Computer.Clock.LocalTime.Now.ToString)
    ElseIf e.Reason = SessionSwitchReason.SessionLogoff Then
        My.Computer.EventLogs.Application.WriteEntry( _
My.User.Username.ToString & " logged off at " & _
My.Computer.Clock.LocalTime.Now.ToString)
    End If
End Sub
private void sessionSwitch(System.Object sender, _
Microsoft.Win32.SessionSwitchEventArgs e)
{
    if (e.Reason == SessionSwitchReason.SessionLogon)
        EventLog.WriteEntry("sessionSwitch", _
SystemInformation.UserName.ToString() + " logged on at " + _
DateTime.Now.TimeOfDay.ToString());
    else if (e.Reason == SessionSwitchReason.SessionLogoff)
        EventLog.WriteEntry("sessionSwitch", _
SystemInformation.UserName.ToString() + " logged off at " + _
DateTime.Now.TimeOfDay.ToString());
}

参照

処理手順

方法 : Windows フォーム ListView コントロールの項目をグループ化する

方法 : Windows フォーム ListView コントロールの "並べて表示" ビューを有効にする

方法 : Windows フォーム ListView コントロールに挿入マークを表示する

参照

FlatStyle

SessionSwitch