「自分の為のメモ帳」ご利用は自己責任で!、↓↓↓記事・ツール等へのコメントは一括して掲示板へお願いします

フォームの初期化生成・表示・非表示・破棄は人によりけりになりますが
今回は参照サイトにのっとってインターフェイスのRun()内で生成・表示とプラグインフォームクローズで破棄したいと思います

1)VC#でプロジェクト>新しい項目の追加
名前は今回はそのまま「Form.cs」にしときます
※参照設定にSystem.DrawingとSystem.Windows.Formが追加されます


※フォームにコードを書く場合は
「Form.cs[デザイン]」を表示させて
・VC#で表示>コード
・表示されているフォームで右クリック>コードの表示
VC#で表示ソリューション エクスプローラを開く
(「ソリューション エクスプローラを開く」が「その他のウインドウ」の中にある場合があります)
の中の「Form.cs」を選んで右クリック>コードの表示

3)フォームの変数を作る
インターフェイスのトップにフォームの変数を作る
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClassLibrary1
{
    public class Class1 : Plugin.IPlugin
    {
        //ホストをもらう変数
        Plugin.IPluginHost host = null;

        //フォームの変数
        Form1 form = null;

        /// <summary>
        /// プラグインのホスト
        /// </summary>
        public Plugin.IPluginHost Host
        {
            get
            {
                return this.host;
            }
            set
            {
                this.host = value;
            }
        }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4)フォームの生成と表示
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/// <summary>
/// プラグイン実行時に呼ばれる
/// </summary>
public void Run()
{
    //フォームの生成
    form = new Form1();
    //フォームの表示
    form.Show();
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

このままだといくらでもフォームが生成・表示されてしまうので
フォームがnullの時だけ生成・表示するようにする
/// <summary>
/// プラグイン実行時に呼ばれる
/// </summary>
public void Run()
{
    if (form == null)
    {
        //フォームの生成
        form = new Form1();
        //フォームの表示
        form.Show();
    }
}

このままだとフォームがnullにならないので
フォームクローズイベントでnullにする
「form.FormClosing+=」まで書いてTabを押すと続きを書いてくれる


そのままTabを押すとイベントを生成してくれる


/// <summary>
/// プラグイン実行時に呼ばれる
/// </summary>
public void Run()
{
    if (form == null)
    {
        //フォームの生成
        form = new Form1();
        //フォームの表示
        form.Show();
        //フォームクローズイベント
        form.FormClosing += new System.Windows.Forms.FormClosingEventHandler(form_FormClosing);
    }
}

void form_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
    throw new NotImplementedException();
}

フォームをnullにする
これでフォームを1つだけ起動して閉じるを繰り返しできるようになります
/// <summary>
/// プラグイン実行時に呼ばれる
/// </summary>
public void Run()
{
    if (form == null)
    {
       //フォームの生成
       form = new Form1();
       //フォームの表示
       form.Show();
       //フォームクローズイベント
       form.FormClosing += new System.Windows.Forms.FormClosingEventHandler(form_FormClosing);
    }
}

/// <summary>
/// プラグインフォームを閉じたときに呼ばれる
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void form_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
    form = null;
}

5)このままだとプラグインフォームがNCVフォームの裏に隠れてしまうので
表示する前に親子関係を設定する
※NCVのフォームは「host.MainForm」
/// <summary>
/// プラグイン実行時に呼ばれる
/// </summary>
public void Run()
{
    if (form == null)
    {
        //フォームの生成
        form = new Form1();
        //オーナー設定
        form.Owner = host.MainForm;
        //フォームの表示
        form.Show();
        //フォームクローズイベント
        form.FormClosing += new System.Windows.Forms.FormClosingEventHandler(form_FormClosing);
    }
}

6)このままだとプラグインフォーム表示時にNCVが
最前面になっていると裏に隠れてしまうのでNCVのTopMostの値をもらう
/// <summary>
/// プラグイン実行時に呼ばれる
/// </summary>
public void Run()
{
    if (form == null)
    {
        //フォームの生成
        form = new Form1();
        //オーナー設定
        form.Owner = host.MainForm;
        //TopMostを受け取る
        form.TopMost = host.MainForm.TopMost;
        //フォームの表示
        form.Show();
        //フォームクローズイベント
        form.FormClosing += new System.Windows.Forms.FormClosingEventHandler(form_FormClosing);
    }
}


7)ビルド!(今作ったものをdllファイルとして書き出す)
VC#でデバック>ソリューションのビルド
先ほど保存したところに「ClassLibrary1.dll」が新しくできています
Projects\ClassLibrary1\ClassLibrary1\bin\Release\ClassLibrary1.dll

8)NCVで確認!
「ClassLibrary1.dll」をNCVのpluginsフォルダに入れてNCVを起動
プラグインの「キリ番ゲッター」を押してフォームが表示して
もう一度プラグインの「キリ番ゲッター」を押してフォームが表示されないことを確認
右上の「×」を押してフォームを閉じる
もう一回プラグインの「キリ番ゲッター」を押してフォームが表示されれば成功!

wikiチェック日

wiki主のwikiをチェックした日
(コメント・掲示板・ランキング等)

●2014/07/28
●2014/04/15
●2014/03/22
●2014/03/16
●2014/02/25
(直近5日)

※連休が続く時は
 見ていない場合が多いです
※最終日よりあまり日が長い場合は
 掲示板等の返信が遅れる・
 返信がない場合があります
※wikiを更新した日ではありません

メインメニュー

条件分枝文
繰返文
  • for文
  • while文
  • foreach文
  • goto/break/continue

作ったーツール紹介

その他

  • 記事なし

ニコニコ生放送用
コメントビューア

アンコちゃんプラグイン

(スクリーンショットと設定text内容のみ)

NCVプラグイン

(スクリーンショットと設定text内容のみ)
プラグイン作成
NCVα127より.NETframeworkが4.0になっています ↑手順6)の対象のフレームワークを.NET Framework 4.0に

アップローダー

作ったツールがアップされています
プログラムの試作
パスはそれぞれのコメントへ
※ほとんど日付です
ツールへの質問は当wiki掲示板へ

管理人/副管理人のみ編集できます