このドキュメントはアーカイブされており、メンテナンスされていません。

FrameworkElement.Cursor プロパティ

マウス ポインタがこの要素の上にあるときに表示されるカーソルを取得または設定します。これは、依存関係プロパティです。

名前空間: System.Windows
アセンブリ: PresentationFramework (presentationframework.dll 内)
XML 名前空間 :  http://schemas.microsoft.com/winfx/2006/xaml/presentation

public Cursor Cursor { get; set; }
/** @property */
public Cursor get_Cursor ()

/** @property */
public void set_Cursor (Cursor value)

public function get Cursor () : Cursor

public function set Cursor (value : Cursor)

<object Cursor="Cursor" .../>

プロパティ値

表示するカーソル。この依存関係プロパティによって、既定値が null 参照 (Visual Basic では Nothing) として定義されます。ただし、実行時の実際的な既定値は、さまざまな側面に起因します。

識別子フィールド

CursorProperty

true に設定されたメタデータのプロパティ

なし

このプロパティを XAML で設定した場合、XAML リーダーは、Cursor クラスの型変換に依存して文字列を評価します。提供された文字列は、CursorType 値に評価される必要があります。詳細については、Cursor のトピックを参照してください。

このプロパティによって設定されるカーソルが、この要素上にマウス ポインタがあるときに表示されるかどうかも、ForceCursor プロパティの値によって決まります。イベントに関連する考慮事項 (アクティブなドラッグ、マウスのキャプチャ、コントロール内のテキスト編集モードなど) も、このプロパティで指定した値よりも高い優先順位を持つカーソルに影響します。

このプロパティを最終的な既定値に設定する動作を元に戻すには、再度 null 参照 (Visual Basic では Nothing) に設定します。

既定値 null 参照 (Visual Basic では Nothing) の実際の意味は、実際的なカーソル値の決定はここでは見送られるため、他の場所から取得する必要があるということです。どのソースからも値がプログラムで指定されない場合、Windows Presentation Foundation (WPF) アプリケーション上に表示される既定のカーソルは矢印になります。ただし、カーソルが要素の上を通り過ぎたときの一時的なカーソルの変化は、要素の Cursor の値には設定されません。Cursor プロパティで null 以外の値が報告されるのは、コードやスタイルなどによって実際に設定された場合だけです。WPF アプリケーション上でマウスを動かすたびに QueryCursor イベントが発生します。このイベントはバブルするため、ルート上の任意の要素でこのイベントを処理して、イベントの引数を通じてカーソルの値を設定できます。視覚的に識別できるカーソルは、ほとんどの場合、この機構によって生成されます。QueryCursor ハンドラがカーソルの結果を返した場合は、イベントが処理され、変更された値がイベントの引数にあることになります。この事実は、どのレベルの Cursor プロパティの値より優先されます (ForceCursor が設定された場合を除く)。

カスタム カーソルを作成しない場合は、通常、このプロパティを Cursors クラスの静的プロパティ値に設定します。コードで Cursor を設定するには、次のいずれかを行う必要があります。

  • Cursor コンストラクタを呼び出して Cursor のインスタンスを取得します。Cursor コンストラクタの 2 つの署名では、ストリームかファイルを使用します。これは、カスタム カーソルの Cursor オブジェクトが作成されることを想定しているためです。

  • CursorConverter クラスとその ConvertFrom メソッドを使用して、カーソルを CursorType で指定するか、CursorType に評価される文字列で指定して、戻り値を Cursor にキャストします。

部分信頼では Cursor をカスタム値に設定することはできません。カスタム カーソルの詳細については、「入力の概要」を参照してください。

カーソル グラフィックを意図的に設定する方法を次の例に示します。

public void CursorTypeChanged(object sender, SelectionChangedEventArgs e)
{
    ComboBox source = e.Source as ComboBox;

    if (source != null)
    {
        ComboBoxItem selectedCursor = source.SelectedItem as ComboBoxItem;

        // Changing the cursor of the Border control 
        // by setting the Cursor property
        switch (selectedCursor.Content.ToString())
        {
            case "AppStarting":
                DisplayArea.Cursor = Cursors.AppStarting;
                break;
            case "ArrowCD":                        
                DisplayArea.Cursor = Cursors.ArrowCD;
                break;
            case "Arrow":
                DisplayArea.Cursor = Cursors.Arrow;
                break;
            case "Cross":
                DisplayArea.Cursor = Cursors.Cross;
                break;
            case "HandCursor":
                DisplayArea.Cursor = Cursors.Hand;
                break;
            case "Help":
                DisplayArea.Cursor = Cursors.Help;
                break;
            case "IBeam":
                DisplayArea.Cursor = Cursors.IBeam;
                break;
            case "No":
                DisplayArea.Cursor = Cursors.No;
                break;
            case "None":
                DisplayArea.Cursor = Cursors.None;
                break;
            case "Pen":
                DisplayArea.Cursor = Cursors.Pen;
                break;
            case "ScrollSE":
                DisplayArea.Cursor = Cursors.ScrollSE;
                break;
            case "ScrollWE":
                DisplayArea.Cursor = Cursors.ScrollWE;
                break;
            case "SizeAll":
                DisplayArea.Cursor = Cursors.SizeAll;
                break;
            case "SizeNESW":
                DisplayArea.Cursor = Cursors.SizeNESW;
                break;
            case "SizeNS":
                DisplayArea.Cursor = Cursors.SizeNS;
                break;
            case "SizeNWSE":
                DisplayArea.Cursor = Cursors.SizeNWSE;
                break;
            case "SizeWE":
                DisplayArea.Cursor = Cursors.SizeWE;
                break;
            case "UpArrow":
                DisplayArea.Cursor = Cursors.UpArrow;
                break;
            case "WaitCursor":
                DisplayArea.Cursor = Cursors.Wait;
                break;
            case "Custom":
                DisplayArea.Cursor = CustomCursor;
                break;
            default:
                break;
        }

        // If the cursor scope is set to the entire application
        // Use OverrideCursor to force the cursor for all elements
        if (cursorScopeElementOnly == false)
        {
            Mouse.OverrideCursor = DisplayArea.Cursor;
        }
    }
}

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

.NET Framework

サポート対象 : 3.0
表示: