Column >【Visual Studio】PanelManagerの導入
2016/9/30 【Visual Studio】PanelManagerの導入

Visual Studioでフォームアプリケーションを作りたいときに、
デザイン画面で色々なコントロールを置いて作ることが多いかと思いますが、
標準で入っているコントロールの中の一つにTabControlがあります。

これを使えばそれぞれのタブごとにデザインを編集できるので便利なのですが、
上のタブの部分を消したいなと思ったので調べてみたところ、
PanelManagerというコントロールがタブが消えたTabControlのような働きをしているそうなので
導入してみることにしました。




まず始めに、PanelManagerの開発者の方のサイトに行ってコードをコピーします。
今回はc#のコードをコピーしてやっていくことにします。

そして、コピーしたコードを貼りつけたcsファイルを作ります。
ここではPanelManager.csというファイルをデスクトップに置いておくことにします。




次は、スタートメニューからVisual Studioの開発者コマンドプロンプトというのを起動します。




次に、開いたコマンドプロンプトでcsファイルのある場所に行き、
csc /target:library /out:PanelManager.dll PanelManager.cs
というコマンドを打ちます。

そうするとcsファイルからdllファイルが作成されるのですが、
開発者の方のコードをコピペした状態だと、下のようにwarningが出てきます。



最近のVisual Studioからするとこのcsファイルのコードは古い形式だそうなので
使用を推奨しないコードであるという目印の
[Obsolete]
というのをcsファイルの348行目と447行目に追加します。







2016/10/16 追記

ソースコードの中に[Obsolete]を入れることでPanelManagerを導入することはできるのですが、
このままだと背景色を透明にできなかったので、背景色を透明にできるようにするために
PanelManagerクラスとManagedPanelクラスのコンストラクタ(28行目、172行目)に
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
という文を入れておきました。







その後で同じようにコマンドを実行するとこんな感じになりました。



warningがまだ一つ残っていますが、対処法がよくわからなかったのと、
対処しなくても最終的に思い通りに動いたので、今回は放っておくことにしました。
ちょっと横着な感じも漂いますが……



次はVisual Studioに作成したDLLファイルの参照を追加します。
Visual Studioのツールボックスで右クリックをして、「アイテムの選択」を選びます。



次に、「参照」から先程作ったdllファイルを選択します。



追加したPanelManagerにチェックが入っているのを確認して「OK」を押します。



そうすると、ツールボックスの中にPanelManagerが加わっているので、
PanelManagerを画面に配置することができます。








PanelManagerをデザイン画面に配置すると、managedPanel1,managedPanel2というものも
自動的に配置されます。

PanelManagerのSelectedPanelというプロパティで選ばれているパネルが
デザイン画面に映されているので、
このSelectedPanelを切り替えることでそれぞれのタブの画面の編集ができます。





1つのPanelManagerで制御するパネルの数を増やしたり減らしたりしたいときは、
PanelManagerの右上にある四角いのを押せばできるみたいです。

プログラムからSelectedPanelを変更する際は
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace testCSharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (panelManager1.SelectedPanel == managedPanel1)
            {
                panelManager1.SelectedPanel = managedPanel2;
            }
            else
            {
                panelManager1.SelectedPanel = managedPanel1;
            }
        }
    }
}
こんな感じのプログラムで変更することができました。
    Please
    Share!
  • feedly
  • facebook
  • twitter
  • hatena bookmark
  • pocket
  • Google plus

inserted by FC2 system