ContextMenuとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > ContextMenuの意味・解説 

コンテクスト‐メニュー【context menu】


ContextMenu イベント


ContextMenu クラス

ショートカット メニュー表します。ContextMenuStrip では、以前のバージョンContextMenu コントロール機能置換または追加されていますが、下位互換性維持し必要に応じて今後使用できるように、ContextMenu残されています。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Class ContextMenu
    Inherits Menu
public class ContextMenu : Menu
public ref class ContextMenu : public
 Menu
public class ContextMenu extends Menu
public class ContextMenu extends
 Menu
解説解説

ContextMenu クラスは、ユーザーコントロールまたはフォーム領域の上で、右クリックすると表示されるショートカット メニュー表します通常ショートカット メニューフォームの MainMenu のさまざまなメニュー項目を組み合わせるために使用されます。ショートカット メニューは、アプリケーションコンテキスト指定されるためユーザーにとっては使いやすくなります。たとえば、TextBox割り当てられショートカット メニュー使用すると、テキストフォント変更したり、コントロール内のテキスト検索するためのメニュー項目、またはテキストコピーして貼り付けるクリップボード機能使用できますまた、MainMenu 内にない新しい MenuItem オブジェクトショートカット メニュー表示してMainMenu では表示されない、状況合ったコマンド使用することもできます

通常ショートカット メニューは、ユーザーコントロールまたはフォーム自体の上右ボタンクリックする表示されます。表示されているコントロールおよび Form は、ショートカット メニュー表示するコントロールContextMenu クラスバインドする ContextMenu プロパティ持ってます。ContextMenu複数コントロール使用できます。SourceControl プロパティ使用すると、コントロール固有のタスク実行、またはコントロール表示されるショートカット メニュー変更のために、どのコントロール最後にショートカット メニュー表示されたかを確認できます

メニュー表示される前にチェック マーク設定、項目の無効化、および他のメニュー タスク実行のために、いつショートカット メニュー表示していたかを知ることができますPopup イベント処理すると、いつショートカット メニュー表示されていたかを確認できます

メモメモ

MainMenu表示されている MenuItem オブジェクト再利用して、ContextMenu使用するには、MenuItem クラスの CloneMenu メソッド使用してメニューコピー作成する必要がありますMenuItem クラスの MergeMenu メソッド使用すると、メニュー項目とそのサブメニュー項目を 1 つMenuItem オブジェクトマージすることもできます

Windows Mobile for Pocket PCWindows Mobile for SmartphoneWindows CE プラットフォームメモ : Pocket PC では、子フォームでのショートカット メニュー使用避けてください。その親フォーム破棄した後で表示されたままとなるためです。

使用例使用例

ContextMenuPopup イベントイベント ハンドラ作成するコード例次に示します。このイベント ハンドラコードは、ショートカット メニュー表示しているコントロールpictureBox1 という名前の PictureBox コントロールtextBox1 という名前の TextBox コントロールのどちらであるかを判断します。どちらのコントロールContextMenuショートカット メニュー表示したに応じて適切な MenuItem オブジェクトContextMenu追加されます。この例では、フォーム内で定義されている contextMenu1 という名前の ContextMenu クラスインスタンスが既に存在する必要があります。またこの例では、TextBoxPictureBoxフォーム追加されており、これらのコントロールContextMenu プロパティcontextMenu1設定されている必要があります

Private Sub MyPopupEventHandler(sender As
 System.Object, e As System.EventArgs)
    ' Define the MenuItem objects to display for the TextBox.
    Dim menuItem1 As New
 MenuItem("&Copy")
    Dim menuItem2 As New
 MenuItem("&Find and Replace")
    ' Define the MenuItem object to display for the PictureBox.
    Dim menuItem3 As New
 MenuItem("C&hange Picture")
    
    ' Clear all previously added MenuItems.
    contextMenu1.MenuItems.Clear()
    
    If contextMenu1.SourceControl Is textBox1
 Then
        ' Add MenuItems to display for the TextBox.
        contextMenu1.MenuItems.Add(menuItem1)
        contextMenu1.MenuItems.Add(menuItem2)
    ElseIf contextMenu1.SourceControl Is pictureBox1
 Then
        ' Add the MenuItem to display for the PictureBox.
        contextMenu1.MenuItems.Add(menuItem3)
    End If
End Sub 'MyPopupEventHandler '
private void MyPopupEventHandler(System.Object
 sender, System.EventArgs e)
 {
    // Define the MenuItem objects to display for the TextBox.
    MenuItem menuItem1 = new MenuItem("&Copy");
    MenuItem menuItem2 = new MenuItem("&Find and Replace");
    // Define the MenuItem object to display for the PictureBox.
    MenuItem menuItem3 = new MenuItem("C&hange Picture");

    // Clear all previously added MenuItems.
    contextMenu1.MenuItems.Clear();
 
    if(contextMenu1.SourceControl == textBox1)
    {
       // Add MenuItems to display for the TextBox.
       contextMenu1.MenuItems.Add(menuItem1);
       contextMenu1.MenuItems.Add(menuItem2);
    }
    else if(contextMenu1.SourceControl == pictureBox1)
    {
       // Add the MenuItem to display for the PictureBox.
       contextMenu1.MenuItems.Add(menuItem3);
    }
 }
private:
   void MyPopupEventHandler( System::Object^ /*sender*/, System::EventArgs^
 /*e*/ )
   {
      // Define the MenuItem objects to display for the TextBox.
      MenuItem^ menuItem1 = gcnew MenuItem( "&Copy" );
      MenuItem^ menuItem2 = gcnew MenuItem( "&Find and Replace" );
      // Define the MenuItem object to display for the PictureBox.
      MenuItem^ menuItem3 = gcnew MenuItem( "C&hange Picture" );
      
      // Clear all previously added MenuItems.
      contextMenu1->MenuItems->Clear();

      if ( contextMenu1->SourceControl == textBox1 )
      {
         
         // Add MenuItems to display for the TextBox.
         contextMenu1->MenuItems->Add( menuItem1 );
         contextMenu1->MenuItems->Add( menuItem2 );
      }
      else if ( contextMenu1->SourceControl
 == pictureBox1 )
      {
         // Add the MenuItem to display for the PictureBox.
         contextMenu1->MenuItems->Add( menuItem3 );
      }
   }
private void MyPopupEventHandler(Object sender,
 EventArgs e)
{
    // Define the MenuItem objects to display for the TextBox.
    MenuItem menuItem1 = new MenuItem("&Copy");
    MenuItem menuItem2 = new MenuItem("&Find and Replace");

    // Define the MenuItem object to display for the PictureBox.
    MenuItem menuItem3 = new MenuItem("C&hange Picture");

    // Clear all previously added MenuItems.
    contextMenu1.get_MenuItems().Clear();
    if (contextMenu1.get_SourceControl().Equals(textBox1)) {
        // Add MenuItems to display for the TextBox.
        contextMenu1.get_MenuItems().Add(menuItem1);
        contextMenu1.get_MenuItems().Add(menuItem2);
    }
    else {
        if (contextMenu1.get_SourceControl().Equals(pictureBox1))
 {
            // Add the MenuItem to display for the PictureBox.
            contextMenu1.get_MenuItems().Add(menuItem3);
        }
    }
} //MyPopupEventHandler
継承階層継承階層
System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Windows.Forms.Menu
        System.Windows.Forms.ContextMenu
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ContextMenu コンストラクタ ()

メニュー項目を指定せずに、ContextMenu クラス新しインスタンス初期化します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

public ContextMenu ()
public:
ContextMenu ()
public ContextMenu ()
解説解説

このバージョンコンストラクタ使用した後で、Menu.MenuItemCollection クラスAdd メソッド使用してContextMenuメニュー項目を追加できますMenu.MenuItemCollectionアクセスするには、MenuItems プロパティ使用します

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ContextMenu クラス
ContextMenu メンバ
System.Windows.Forms 名前空間
Menu.MenuItemCollection

ContextMenu コンストラクタ (MenuItem[])

一連の MenuItem オブジェクト指定して、ContextMenu クラス新しインスタンス初期化します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Public Sub New ( _
    menuItems As MenuItem() _
)
Dim menuItems As MenuItem()

Dim instance As New ContextMenu(menuItems)
public ContextMenu (
    MenuItem[] menuItems
)
public:
ContextMenu (
    array<MenuItem^>^ menuItems
)
public ContextMenu (
    MenuItem[] menuItems
)
public function ContextMenu (
    menuItems : MenuItem[]
)

パラメータ

menuItems

ショートカット メニュー追加するメニュー項目を表す MenuItem オブジェクト配列

解説解説

このバージョンコンストラクタ使用すると、指定したメニュー項目を作成時に保持している ContextMenu作成できます。このバージョンコンストラクタ使用した後で、Menu.MenuItemCollection クラスAdd メソッド使用してContextMenuメニュー項目を追加できますMenu.MenuItemCollectionアクセスするには、MenuItems プロパティ使用します

使用例使用例

ショートカット メニュー構築しShow メソッド使用する方法を、次のコード例示します。この例を実行するには、次のコードを、Button1 という名前のボタン配置されているフォーム貼り付けます。必ずすべてのイベントイベント処理メソッド関連付けるようにしてください

' Displays the shortcut menu, offsetting its location 
' from the upper-left corner of Button1 by 20 pixels in each direction.
 
Private Sub Button1_Click(ByVal
 sender As System.Object, _
    ByVal e As System.EventArgs) Handles
 Button1.Click

    'Declare the menu items and the shortcut menu.
    Dim menuItems() As MenuItem = New
 MenuItem() _
        {New MenuItem("Some Button Info"), _
        New MenuItem("Some Other Button Info"),
 _
        New MenuItem("Exit")}

    Dim buttonMenu As New
 ContextMenu(menuItems)
    buttonMenu.Show(Button1, New System.Drawing.Point(20, 20))
End Sub
// Displays the shortcut menu, offsetting its location 
// from the upper-left corner of Button1 by 20 pixels in each direction.
 
private void Button1_Click(System.Object sender,
 System.EventArgs e)
{

    //Declare the menu items and the shortcut menu.
    MenuItem[] menuItems = new MenuItem[]{new
 MenuItem("Some Button Info"), 
        new MenuItem("Some Other Button Info"), new
 MenuItem("Exit")};

    ContextMenu buttonMenu = new ContextMenu(menuItems);
    buttonMenu.Show(Button1, new System.Drawing.Point(20, 20));
}
// Displays the shortcut menu, offsetting its location 
// from the upper-left corner of Button1 by 20 pixels in each direction.
 
void Button1_Click( System::Object^ /*sender*/, System::EventArgs^
 /*e*/ )
{
   
   //Declare the menu items and the shortcut menu.
   array<MenuItem^>^menuItems = {gcnew MenuItem( "Some Button Info"
 ),gcnew MenuItem( "Some Other Button Info" ),gcnew MenuItem( "Exit"
 )};
   System::Windows::Forms::ContextMenu^ buttonMenu = gcnew System::Windows::Forms::ContextMenu(
 menuItems );
   buttonMenu->Show( Button1, System::Drawing::Point( 20, 20 ) );
}
// Displays the shortcut menu, offsetting its location 
// from the upper-left corner of Button1 by 20 pixels in each direction.
 
private void button1_Click(Object sender, System.EventArgs
 e)
{
    //Declare the menu items and the shortcut menu.
    MenuItem menuItems[] =
        new MenuItem[] { new MenuItem("Some
 Button Info"),
        new MenuItem("Some Other Button Info"), new
 MenuItem("Exit") };

    ContextMenu buttonMenu = new ContextMenu(menuItems);
    buttonMenu.Show(button1, new System.Drawing.Point(20, 20));
} //button1_Click
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ContextMenu コンストラクタ

ContextMenu クラス新しインスタンス初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
ContextMenu () メニュー項目を指定せずに、ContextMenu クラス新しインスタンス初期化します。

.NET Compact Framework によってサポートされています。

ContextMenu (MenuItem[]) 一連の MenuItem オブジェクト指定してContextMenu クラス新しインスタンス初期化します。
参照参照

関連項目

ContextMenu クラス
ContextMenu メンバ
System.Windows.Forms 名前空間
Menu.MenuItemCollection

ContextMenu プロパティ


パブリック プロパティパブリック プロパティ

プロテクト プロパティプロテクト プロパティ
参照参照

関連項目

ContextMenu クラス
System.Windows.Forms 名前空間
Menu
MenuItem
MainMenu

ContextMenu メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド参照)
  名前 説明
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信使用するプロキシ生成必要な情報をすべて格納しているオブジェクト作成します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Dispose  オーバーロードされます。 ( Menu から継承されます。)
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 ( Object から継承されます。)
パブリック メソッド FindMenuItem  指定した値を含む MenuItem を取得します。 ( Menu から継承されます。)
パブリック メソッド GetContextMenu  メニュー格納している ContextMenu を取得します。 ( Menu から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 ( Object から継承されます。)
パブリック メソッド GetLifetimeService  対象インスタンス有効期間ポリシー制御する現在の有効期間サービス オブジェクト取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド GetMainMenu  メニュー格納している MainMenu を取得します。 ( Menu から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 ( Object から継承されます。)
パブリック メソッド InitializeLifetimeService  対象インスタンス有効期間ポリシー制御する有効期間サービス オブジェクト取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド MergeMenu  1 つメニューMenuItem オブジェクト現在のメニューマージます。 ( Menu から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 ( Object から継承されます。)
パブリック メソッド Show オーバーロードされます指定した位置ショートカット メニュー表示します
パブリック メソッド ToString  Menu コントロールを表す String返します。 ( Menu から継承されます。)
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ContextMenu クラス
System.Windows.Forms 名前空間
Menu
MenuItem
MainMenu

ContextMenu メンバ

ショートカット メニュー表します。ContextMenuStrip では、以前のバージョンの ContextMenu コントロール機能置換または追加されていますが、下位互換性維持し必要に応じて今後使用できるように、ContextMenu残されています。

ContextMenu データ型公開されるメンバを以下の表に示します


パブリック コンストラクタパブリック コンストラクタ
パブリック プロパティパブリック プロパティ
プロテクト プロパティプロテクト プロパティ
パブリック メソッドパブリック メソッド
( プロテクト メソッド参照)
  名前 説明
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信使用するプロキシ生成必要な情報をすべて格納しているオブジェクト作成します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Dispose  オーバーロードされます。 ( Menu から継承されます。)
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 (Object から継承されます。)
パブリック メソッド FindMenuItem  指定した値を含む MenuItem を取得します。 (Menu から継承されます。)
パブリック メソッド GetContextMenu  メニュー格納している ContextMenu取得します。 (Menu から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 (Object から継承されます。)
パブリック メソッド GetLifetimeService  対象インスタンス有効期間ポリシー制御する現在の有効期間サービス オブジェクト取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド GetMainMenu  メニュー格納している MainMenu を取得します。 (Menu から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 (Object から継承されます。)
パブリック メソッド InitializeLifetimeService  対象インスタンス有効期間ポリシー制御する有効期間サービス オブジェクト取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド MergeMenu  1 つメニューMenuItem オブジェクト現在のメニューマージます。 (Menu から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 (Object から継承されます。)
パブリック メソッド Show オーバーロードされます指定した位置ショートカット メニュー表示します
パブリック メソッド ToString  Menu コントロールを表す String返します。 (Menu から継承されます。)
プロテクト メソッドプロテクト メソッド
パブリック イベントパブリック イベント
参照参照

関連項目

ContextMenu クラス
System.Windows.Forms 名前空間
Menu
MenuItem
MainMenu

コンテキストメニュー

(ContextMenu から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/07/21 22:59 UTC 版)

GNOMEにおけるコンテキストメニューの例

コンテキストメニュー: context menu)とは、グラフィカルユーザーインターフェイス (GUI) 上の部品(ウィジェット)またはその配下の項目(アイテム)をクリックすることでポップアップ表示されるメニューのことであり、操作・実行中のアプリケーションや、選択した項目の内容といった文脈あるいは状況(コンテキスト)によって変化する選択肢(オプション)の一覧を提供する。ショートカットメニュー: shortcut menu)や、右クリックメニュー: right-click menu)ともいう。

通常、WindowsmacOSX Window Systemを実行するUNIXといったオペレーティングシステムにおけるマウスの右ボタン[注釈 1]をクリックすることで呼び出される。ボタンが1つしかないマウスの場合、同時にキーボードの特定のキーを押下すれば表示できることもある(例:Mac OSでは Control +クリック)。Windowsに対応したキーボードでは、コンテキストメニューを呼び出すメニューキーが備えられている。スタイラスペンのサイドボタン押下や、タッチパネルの長押し、タッチパッド上の2本指タップ[1]などで表示できる環境もある。

歴史

コンテキストメニューは、1970年代半ばにAlto暫定ダイナブックとして機能させるためのある種のオペレーティングシステムとして開発されたSmalltalk環境における「ポップアップメニュー」とその「オブジェクト指向的」な振る舞いを起源とする[要校閲] 。この「暫定ダイナブック環境」では、Altoにて3つのボタンがあるマウスの2番目のボタンをクリックすると、その操作を「メッセージ」として受け取ったオブジェクトに対する、ふさわしいメニューをポップアップする責務を担っていたため、ユーザーにはコンテキストに応じてメニュー内容が変化するように見えた。なお、同じAltoを使って開発されてはいてもSmalltalkとは系譜が異なり、ゆえにまったく別の操作スタイルを有したStar1981年リリース)には、同種機能はなかった(Starでは、マウスは主に対象の選択のみに用いられ、編集操作にはメニューではなく、キーボード上の特殊なキーで行うものだった)。一方で、プログラミング言語であるObjective-Cや、アプリケーションプログラミングインターフェイス (API) のみならず、ユーザーインターフェイスにおいてもSmalltalkの強い影響下にあったNEXTSTEP1989年公開)には、メインメニューを呼び出すなどという格上だと言えるような機能が見受けられた。同様のことはSmalltalkを用いて新しいインターフェイスプロトタイピングなどが行われたWindows 951995年公開)についても言える。

詳細

例えばWindows ExplorerFinderといったファイルマネージャーでは、選択中のファイルまたはフォルダーに対してコンテキストメニューを表示することで、「開く」「名前を変更」「コピー」「削除」などといった操作の選択肢が表示される。ファイル種別に応じて、関連付けられた特殊な操作コマンドが表示されることもある。編集可能なテキストボックスでは、通常は「元に戻す」「やり直し」、クリップボードからのペーストを実行する「貼り付け」コマンドなどが表示されるが、文字列を選択してからコンテキストメニューを表示することで、選択中の文字列に対してクリップボードへのコピーやカットを実行する「コピー」および「切り取り」コマンドが表示される。

コンテキストメニューは階層的に構成されていることもある。Microsoft Wordは、コンテキストメニュー上の矢印アイコンをクリックした後でのみサブエントリを表示し、さもなくば親エントリに対応した動作をするという方式を採用した、最初のアプリケーションの1つである。これによって同じ操作の繰り返しが素早く行えるようになった。

ウェブブラウザでは、ウェブページ上でコンテキストメニューを表示すると、選択したテキストのコピーや、画像に名前を付けて保存(ダウンロード)する機能などが使える。このようなユーザーによる安易なコンテンツのコピーを禁止したい場合、スクリプト言語によってコンテキストメニューの表示を禁止することができる[注釈 2]

Macintoshでは長らく1ボタンマウスであり、コンテキストメニューはあくまでも補助的な位置付けで、原則としてコンテキストメニューの機能はメニューバーにある項目からも呼び出すことができた。そもそも導入されたのがMac OS 8からと遅く、対応していないアプリケーションも多かった。しかし便利であるのも事実で、コンテキストメニュー機能拡張9.xまで)や、Contextual Menu Itemsプラグイン (macOS) にて、その内容をカスタマイズすることもできる。

コンテキストメニューは必要に応じて表示され、状況に応じて内容が変化するものであり、適切に使用することで画面領域を節約することができるなどのメリットがある。しかし、不適切なコンテキストメニューはかえって使いにくくなる。まず、静的に配置されて最初から見えているメニューやツールバー、ボタンなどと異なり、画面上には操作上のヒントが何もない状態となるので、コンテキストメニューの表示方法を知らないユーザーは、そのソフトウェアの利用をあきらめてしまう可能性が高い。また、アプリケーションによってはコンテキストメニューでしか利用できない機能があり、特にそのコンテキストメニューがウィンドウ内のごく限られた領域でしか呼び出せない場合、経験を積んだユーザーでさえ混乱してしまう。

脚注

注釈

  1. ^ マウスが左利き用に設定されている場合は左側ボタンになる。
  2. ^ 違法ダウンロードを本格的に防止するには、コンテキストメニューの表示を禁止する対策だけでは不十分だが、少なくとも簡単な操作で誰でもコピーできてしまう状態を回避することは、防止策としては一定の効果がある。

出典

関連項目



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ContextMenu」の関連用語

ContextMenuのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ContextMenuのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのコンテキストメニュー (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS