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

コントロール操作のON/OFF(numericUpDown,textBox,button)
  • 放送に接続していない時操作できないようにする
  • 放送に接続したら操作できるようにする
  • [開始]押したら操作できないようにする
  • コメントを投稿したら操作できるようにする
上記の内容を実装する
  1. メソッドにまとめて引数boolでコントロールのEnabledを変更するようにする
  2. フォーム側に実装してClass1で呼び出して使用するようにする
(Class1はホストをもらったり、名前を決めた方)

下記のフォーム側のソースにメソッドを追加していきます
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 ClassLibrary1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}
  • 引数boolのenabledメソッドを作る(bool変数は適当にEnabledとする)
  1. Class1から使えるようにpublicにする
  2. 戻り値は無いのでvoid
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 ClassLibrary1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public void enabled(bool Enabled)
        {
        
        }
    }
}
  • 内容を実装
  1. if〜else文で引数がtrueだったらコントロールのEnabledをtrueにする
/// <summary>
/// bool引数でコントロールの操作をNO/OFFする
/// </summary>
/// <param name="Enabled">trueの時は操作できる</param>
public void enabled(bool Enabled)
{
    if (Enabled)
    {
        commentnumber.Enabled = true;
        comment.Enabled = true;
        start.Enabled = true;
    }
    else
    {
        commentnumber.Enabled = false;
        comment.Enabled = false;
        start.Enabled = false;
    }
}

ClassLibrary1のソースで
  • フォームを起動したら放送に接続しているか見る
  • 放送に接続したら呼ばれるメソッドを追加する
  • 放送から切断したら呼ばれるメソッドを追加する
を実装

以下のメソッドに追加していく
/// <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);
    }
}

前回同様イベントは+=まで書いてTab2回押しでVC#に任せる
/// <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);

        //IsConnectedは放送に接続しているか
        form.enabled(host.IsConnected);
        //接続・切断のイベントを追加する
        host.BroadcastConnected += new Plugin.BroadcastConnectedEventHandler(host_BroadcastConnected);
        host.BroadcastDisConnected += new Plugin.BroadcastDisConnectedEventHandler(host_BroadcastDisConnected);
    }
}

void host_BroadcastConnected(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

void host_BroadcastDisConnected(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

放送に接続したらコントロールを使えるようにする
/// <summary>
/// 放送に接続したときに呼ばれる
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void host_BroadcastConnected(object sender, EventArgs e)
{
    form.enabled(true);
}

放送から切断したらコントロールを使えないようにする
/// <summary>
/// 放送から切断したときに呼ばれる
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void host_BroadcastDisConnected(object sender, EventArgs e)
{
    form.enabled(false);
}
両方のソース
Form1
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 ClassLibrary1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// bool引数でコントロールの操作をNO/OFFする
        /// </summary>
        /// <param name="Enabled">trueの時は操作できる</param>
        public void enabled(bool Enabled)
        {
            if (Enabled)
            {
                commentnumber.Enabled = true;
                comment.Enabled = true;
                start.Enabled = true;
            }
            else
            {
                commentnumber.Enabled = false;
                comment.Enabled = false;
                start.Enabled = false;
            }
        }
    }
}
Class1
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;
            }
        }

        /// <summary>
        /// プラグインの名前
        /// </summary>
        public string Name
        {
            get { return "キリ番ゲッター"; }
        }

        /// <summary>
        /// プラグインのバージョン
        /// </summary>
        public string Version
        {
            get { return "1.0"; }
        }

        /// <summary>
        /// プラグインの説明
        /// </summary>
        public string Description
        {
            get { return "キリ番にコメントを投稿する"; }
        }

        /// <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);

                //IsConnectedは放送に接続しているか
                form.enabled(host.IsConnected);
                //接続/切断のイベントを追加する
                host.BroadcastConnected += new Plugin.BroadcastConnectedEventHandler(host_BroadcastConnected);
                host.BroadcastDisConnected += new Plugin.BroadcastDisConnectedEventHandler(host_BroadcastDisConnected);
            }
        }

        /// <summary>
        /// 放送に接続したときに呼ばれる
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void host_BroadcastConnected(object sender, EventArgs e)
        {
            form.enabled(true);
        }

        /// <summary>
        /// 放送から切断したときに呼ばれる
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void host_BroadcastDisConnected(object sender, EventArgs e)
        {
            form.enabled(false);
        }

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

        /// <summary>
        /// NCVを起動したときに「AutoRun()」を実行するか
        /// </summary>
        public bool IsAutoRun
        {
            get { return false; }
        }

        /// <summary>
        /// IsAutoRunがtrueの時NCVを実行したときに呼ばれる
        /// </summary>
        public void AutoRun()
        {
            //throw new NotImplementedException();
        }
    }
}
ビルド!(今作ったものをdllファイルとして書き出す)
VC#でデバック>ソリューションのビルド
先ほど保存したところに「ClassLibrary1.dll」が新しくできています
Projects\ClassLibrary1\ClassLibrary1\bin\Release\ClassLibrary1.dll
NCVで確認!
「ClassLibrary1.dll」をNCVのpluginsフォルダに入れてNCVを起動
下記の4つができていれば成功です!!
・放送に接続しないでプラグインを起動してコントロールが使えない状態か
・放送に接続してプラグインを起動してコントロールが使える状態か
・放送に接続しないでプラグインを起動し、放送に接続してコントロールが使える状態になるか
・放送に接続してプラグインを起動し、放送が終了したらコントロールが使えない状態になるか

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掲示板へ

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