2012-03-22 15 views
26

1つのアイテムの簡単な右クリックメニューでは、しばらく検索していました。たとえば、画像を右クリックすると、小さなメニューに自分のラベルが表示されます。追加、削除など。誰かが助けてくれれば、私は一番大変です。アイテムに右クリックメニューを追加する

ありがとうございます。

ContextMenu cm = new ContextMenu();    
    cm.MenuItems.Add("Item 1", new EventHandler(Removepicture_Click));    
    cm.MenuItems.Add("Item 2", new EventHandler(Addpicture_Click));    
    pictureBox1.ContextMenu = cm; 

答えて

54

がフォームにコンテキストメニューを追加し、次にているContextMenuStripの下に、コントロールのプロパティにそれを割り当てます。ここでは

が完成したコードです。お役に立てれば :)。

・ホープこのことができます:

ContextMenu cm = new ContextMenu(); 
cm.MenuItems.Add("Item 1"); 
cm.MenuItems.Add("Item 2"); 

pictureBox1.ContextMenu = cm; 
+0

ありがとうございます!ジャンプする準備ができていた... – Marshal

+0

あなたを歓迎します;)。 –

+2

すぐに愚かであるかもしれない簡単な質問。どのように私はそれらのアイテムにfuntionsを追加するのですか? – Marshal

17

これは、この質問への包括的な答えです。私はこのページがGoogleの検索結果で高く、答えが十分に詳細には入っていないため、これを行っています。この記事では、Visual Studio C#フォームを使用する能力があることを前提としています。これはVS2012に基づいています。

  1. まず、ContextMenuStripをフォーム上にドラッグします。メニュー項目を追加して名前を変更することができます。

  2. コードを表示し、フォームに自分でイベントを入力する必要があります。問題の項目のイベントを、マウスを下に作成し、(私がいるContextMenuStrip「rightClickMenuStrip」と呼ばれている)ので、同じように、右クリックイベントを割り当てる:

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e) 
    { 
    switch (e.Button) 
        { 
         case MouseButtons.Right: 
         { 
          rightClickMenuStrip.Show(this, new Point(e.X, e.Y));//places the menu at the pointer position 
         } 
         break; 
        } 
    } 
    
  3. form.designerに手動でイベントハンドラを割り当てます。 (あなたはのSystem.Windows.Formsのための「使用」を追加する必要があるかもしれません。あなたはそれを解決することができます):

    this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown); 
    
  4. すべてのことは、この時点で必要とされているが、単純に各メニュー項目をダブルクリックして行うことです他のボタンと同じ方法で、各クリックイベントに対して必要な操作を行います。

これはこの操作の基本コードです。あなたは、あなたのコーディング実践に合わせて、それを明らかに変更することができます。

+0

素晴らしい答え! if(e.Button == MouseButtons.Right) –

+2

この回答が投稿されてから何かが変更されていない限り、手動でコード内に 'MouseDown'イベントを指定する必要はありません。あなたがしなければならないのは、関連付けるコントロールの 'ContextMenuStrip'プロパティを正しい' ContextMenuStrip'に設定するだけです。これにより、ステップ2と3が省略されます(ただし、ステップ2ははるかに小さくなります)。 –

10

Visual Studioを使用している場合は、GUIソリューションは、そこにもある:

  1. ツールボックスからコンテキストメニューを選択し、右クリックの項目にそれぞれについて、
  2. を追加いるContextMenuStrip
  3. を追加項目クリックイベントを対応する関数に設定
  4. 右クリックメニューが接続されるフォーム/ボタン/イメージ/ etc(任意の項目)を選択
  5. 作成したメニューのContextMenuStripプロパティを設定します。
0

これをちょっと使いこなしてしまったので、e.X/eがわかりません。Yポイントはコントロールとの相対的なものなので、リストビューなどにコンテキストメニューを追加していれば、フォームの起点で調整することができます。下の例では、x/yに20を追加して、メニューがカーソルの右下に表示されるようにしました。

cmDelete.Show(this, new Point(e.X + ((Control)sender).Left+20, e.Y + ((Control)sender).Top+20)); 
関連する問題