C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: contextMenuStripで動的追加した項目の選択処理


(過去ログ 125 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■74787 / inTopicNo.1)  contextMenuStripで動的追加した項目の選択処理
  
□投稿者/ あと一歩! です。 (1回)-(2015/01/29(Thu) 09:50:34)

分類:[C#] 

contextMenuStripで動的追加した項目のイベント取得について質問です。

visualstudio2010ExpressのC#でデスクトップアプリケーションを開発中です。
詰まっている内容はcontextMenuStrip内に動的に追加した項目を選択した際のイベントの取得についてです。

具体的には、contextMenuStripとnotifyIconを使用してタスクトレイに常駐。
下記のサンプルコードを書き、実行させ、ボタンを押すと動的に項目を追加させることには成功しました。
ところが、追加した項目内の「ファイル1」「ファイル2」「ファイル3」それぞれを選択したことを取得し、それぞれの内容に合った処理を書きたいのでが選択したことをうまく取得することができません。

掲示板内の過去情報も検索しましたが、それでもうまくいきません。

下記サンプルで「ファイル1」「ファイル2」「ファイル3」を選択した場合に、選択内容を取得し処理をするにはどうしたらよいでしょうか。

なにぶん初心者ですので申し訳ありませんが、ご教示よろしくお願いいたします。

■質問用サンプルコード■■■■■■
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            ShowInTaskbar = false;
            WindowState = FormWindowState.Minimized;

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            ContextMenuStrip menu = new ContextMenuStrip();
            ToolStripMenuItem item, submenu;
            submenu = new ToolStripMenuItem();
            submenu.Name = "SubMenuOpen";
            submenu.Text = "ファイルを開く";

            item = new ToolStripMenuItem();
            item.Text = "ファイル1";
            submenu.DropDownItems.Add(item);
            item = new ToolStripMenuItem();
            item.Text = "ファイル2";
            submenu.DropDownItems.Add(item);
            item = new ToolStripMenuItem();
            item.Text = "ファイル3";
            submenu.DropDownItems.Add(item);
            contextMenuStrip1.Items.Add(submenu);

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            notifyIcon1.Visible = false;
            Application.Exit();

        }
    }
}

引用返信 編集キー/
■74788 / inTopicNo.2)  Re[1]: contextMenuStripで動的追加した項目の選択処理
□投稿者/ shu (682回)-(2015/01/29(Thu) 10:16:40)
No74787 (あと一歩! です。 さん) に返信

itemにそれぞれClickイベントをくっつければよいです。
引用返信 編集キー/
■74790 / inTopicNo.3)  Re[2]: contextMenuStripで動的追加した項目の選択処理
□投稿者/ ???????I?@????B (1回)-(2015/01/29(Thu) 12:33:58)
No74788 (shu さん) に返信
> ■No74787 (あと一歩! です。 さん) に返信
>
> itemにそれぞれClickイベントをくっつければよいです。


有り難うございました。
イベントを追加することにより、やりたいことができました。
書き方がスマートかは不明ですが……


修正した内容は以下の通りです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ShowInTaskbar = false;
WindowState = FormWindowState.Minimized;

}

private void Form1_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
EventHandler handler = new EventHandler(this.MenuItem_Click);

ContextMenuStrip menu = new ContextMenuStrip();
ToolStripMenuItem item, submenu;
submenu = new ToolStripMenuItem();
submenu.Name = "SubMenuOpen";
submenu.Text = "ファイルを開く";

item = new ToolStripMenuItem();
item.Text = "ファイル1";
item.Click += handler;
submenu.DropDownItems.Add(item);
item = new ToolStripMenuItem();
item.Text = "ファイル2";
item.Click += handler;
submenu.DropDownItems.Add(item);
item = new ToolStripMenuItem();
item.Text = "ファイル3";
item.Click += handler;
submenu.DropDownItems.Add(item);
contextMenuStrip1.Items.Add(submenu);

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{

}



private void MenuItem_Click(Object sender, System.EventArgs e)
{
ToolStripMenuItem clickMenuItem = (ToolStripMenuItem)sender;
MessageBox.Show(clickMenuItem.Text);
}
}
}

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -