プラグイン実装メモ(1)
プラグインのアセンブリをロードしたら、
ツールバーにアイコンで登録して、そのアイコンをクリックしたら
プラグインが呼ばれるメモ。
ツールバーボタンを派生して、メンバに
プラグインを関連づけておく。
クリックされたら、sender = このとき押されたボタンを指すから
それをキャストして、関連づけされているプラグインを取得する。
1 /// <summary> 2 /// プラグインボタンを作成する 3 /// </summary> 4 /// <param name="ipi"></param> 5 /// <returns></returns> 6 private PluginButton CreatePluginButton(IPlugin ipi) 7 { 8 if( ipi == null ) 9 return null; 10 11 PluginButton pBtn = new PluginButton(); 12 pBtn.CheckOnClick = true; 13 pBtn.DisplayStyle = ToolStripItemDisplayStyle.Image; 14 //pBtn.Image = 関連付けされたリソース ipi.Image 15 pBtn.ImageTransparentColor = Color.Magenta; 16 pBtn.BackColor = Color.Black; 17 pBtn.Name = ipi.Name; 18 pBtn.Size = new Size(23, 22); 19 pBtn.Text = ipi.Name; 20 // プラグインを関連づけ 21 pBtn.SelectedPlugin = ipi; 22 // クリックイベントを登録 23 pBtn.Click += new EventHandler(pBtn_Click); 24 25 return pBtn; 26 } 27 28 void pBtn_Click(object sender, EventArgs e) 29 { 30 // 呼ばれたプラグインのボタンを取得する 31 PluginButton self = sender as PluginButton; 32 33 // 関連づけされたプラグインを取得できる。 34 MessageBox.Show(self.SelectedPlugin.Name); 35 36 // ごにょごにょする 37 } 38 } 39 40 class PluginButton : ToolStripButton 41 { 42 private IPlugin plugin = null; 43 44 /// <summary> 45 /// 関連づけしているプラグイン 46 /// </summary> 47 public IPlugin SelectedPlugin 48 { 49 get { return plugin; } 50 set { plugin = value; } 51 } 52 }