none
(Office)RibbonDropDownItemのClickを取得したい RRS feed

  • 質問

  • いつも参考にさせていただいています。

    OfficeのRibbonのTabにメニューを作るためにアドバイスいただけませんでしょうか。

    環境など:VisualStudio Professional 2013、.NetFramework4.0、C#

    やりたいことは、

    1. Ribbonにデザイナーでギャラリーを配置
    2. 配置したギャラリーにアイテムを追加
    3. それぞれのアイテムにLabelとImageを設定
    4. それぞれのアイテムがクリックされた場合の処理を設定(←ここをどうしたらいいのかわかりません)

    です。

    現状、下のようなコードを書いています。

    private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
    {
         this.gallery1.Label = "check";
    
         RibbonDropDownItem item = this.Factory.CreateRibbonDropDownItem();
         item.Label = "new item";
         item.Image = Properties.Resources.pic;
         this.gallery1.Items.Add(item);
    }

    RibbonDropDownItemにはClickのようなものが見当たりません。

    RibbonGalleryにはClickを設定できるのですが、どのitemがクリックされたか判別できないため、処理を分岐できません。

    メニューに画像を配置できれば良いという考えで作っているため、RibbonDropDownItemやRibbonGalleryにこだわっているわけではありません。

    アドバイスをいただけませんでしょうか?

    よろしくお願いします。





    • 編集済み kkkokkk 2015年3月25日 8:28
    2015年3月25日 8:20

回答

  • こんにちは。

    以下を見た限りで試したことも使ったことも無いですが・・・
    https://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.ribbon.ribbongallery.aspx

    Clickイベント内でギャラリーのSelectedItemプロパティで取得できないものなのですか?

    • 回答としてマーク kkkokkk 2015年3月25日 8:48
    2015年3月25日 8:29
    モデレータ

すべての返信

  • こんにちは。

    以下を見た限りで試したことも使ったことも無いですが・・・
    https://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.ribbon.ribbongallery.aspx

    Clickイベント内でギャラリーのSelectedItemプロパティで取得できないものなのですか?

    • 回答としてマーク kkkokkk 2015年3月25日 8:48
    2015年3月25日 8:29
    モデレータ
  • Tak1wa様

    ご返信ありがとうございます。

    おっしゃる通り、SelectedItemプロパティで分岐できました!

    ありがとうございました。

            private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
            {
                this.gallery1.Label = "check";
    
                for(int i=0;i<5;i++)
                {
                    RibbonDropDownItem item = this.Factory.CreateRibbonDropDownItem();
                    item.Label = "new item" + i.ToString();
                    item.Image = Properties.Resources.pic;
                    this.gallery1.Items.Add(item);
                }
    
                this.gallery1.Click += new RibbonControlEventHandler(gallery1_ButtonClick);
            }
    
            void gallery1_ButtonClick(object sender, RibbonControlEventArgs e)
            {
                String label = this.gallery1.SelectedItem.Label;
                switch(label)
                {   
                    case "new item0":
                        MessageBox.Show("selected 0");
                        break;
                    case "new item1":
                        MessageBox.Show("selected 1");
                        break;
                    default:
                        break;
                }
    
            }

    2015年3月25日 8:50