6月 14

項目を追加、削除、検索

ListBoxの項目はItemsコレクションに保存されています。
項目が固定であれば、デザイン時にItemsプロパティーに
改行区切りで入力しておけばOKです。

以下はFormにListBoxを1つ配置して
起動時のLoadイベント内で項目に対する各処理を行っています。

        private void Form1_Load(object sender, EventArgs e)
        {
            // すべての項目を削除
            listBox1.Items.Clear();

            // 項目を1つずつ追加
            listBox1.Items.Add("りんご");
            listBox1.Items.Add("みかん");

            // 項目を複数まとめて追加(こちらが高速)
            string[] items = {"スイカ", "メロン", "苺"};
            listBox1.Items.AddRange(items);

            // 項目を指定して削除
            listBox1.Items.Remove("みかん");

            // IndexOfで項目のインデックスを取得
            // RemoveAtでインデックスを指定して削除
            listBox1.Items.RemoveAt(listBox1.Items.IndexOf("りんご"));
        }

■結果

listbox_item

6月 14

リンクラベルコントロールの使い方

LinkLabelコントロールはクリッカブルなLabelコントロールです。

例えば、Textプロパティーに http://www.yahoo.co.jp/
のようなURLを設定しておき、クリックされた際の LinkClicked イベントを捕捉して
ブラウザを開くサンプルは次のようになります。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

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

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            try 
            {
                // ブラウザを起動
                System.Diagnostics.Process.Start(linkLabel1.Text); 
            }
            catch(Exception ex)
            {
                // エラー
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
        }
    }
}
6月 14

ラベルコントロールの使い方

Labelコントロールは文字を表示するだけの簡素なコントロールなので
出来ることはあまり多くありませんが
主なプロパティーについてまとめます。

クリッカブルなラベルを利用したい場合はLinkLabelコントロールを利用します。

Font
	フォントを指定します。
BorderStyle
	ラベルを境界線で囲う場合指定します。
Text
	文字列を取得設定します。
TextAlign
	テキストのラベル内での配置位置を決めます。
6月 14

ImageListの使い方

ImageListコントロールは
これ単体で使うことはあまりないかもしれません。

画像を複数蓄えて
配列にアクセスするようにそれを扱うためのコントロールです。

TreeViewコントロールでImageListを使う例はこちら
エクスプローラーのようなドライブとフォルダのツリーを作る

この例では
TreeViewの各Nodeに表示するアイコンをImageListに蓄えておいて
Nodeを追加する際に表示したいアイコンの番号を指定しています。

6月 14

コントロールをグループにまとめる

GroupBoxはコントロールをグループにまとめるために利用されます。
特にラジオボタンのように
グループ内で単一選択させたいような場合にそれらを囲います。

下の例では
種別グループの中で3つの選択肢から1つを選択
料金グループの中で3つの選択肢から1つを選択
を行うためにグループ化を行っています。

また、コントロールが増えてきた時に
単に視覚的にわかりやすいよう、デザインとして利用されることもあるコントロールです。

group

6月 14

コントロールを自動整列する

FlowLayoutPanelを利用すれば
コントロールをパネル上で自動整列させることが可能です。
例として画像をサムネイルっぽく表示させてみます。

パネル上のコントロールは
Controlsコレクションで管理されています。

フォームをリサイズすると、それに追従して中のコントロールも自動整列されます。

flowlayoutpanel

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {
            // レイアウトパネルをFormいっぱいに広げる
            flowLayoutPanel1.Dock = DockStyle.Fill;

            // 10個のPictureBoxを追加し、サムネイルのように表示
            for (int i = 0; i < 10; i++)
            {
                // 追加するPictureBoxを生成
                PictureBox pbox = new PictureBox();
                Bitmap bmp = new Bitmap(@"c:\hp\image\download.png");
                pbox.Image = bmp;

                // PictureBoxを追加
                flowLayoutPanel1.Controls.Add(pbox);
            }
        }
    }
}
6月 14

DomainUpDownコントロールの使い方

DomainUpDownコントロールは
NumericUpDownコントロールと似ています。
こちらは文字列を扱えます。

ただ、その役割はComboBoxと似ていますし
プルダウン表示がないので一覧が見れず
使い所がよくわかりません。
本当の使い方?が実はあるのかもしれませんが

ここでは
選択肢の追加方法と
選択中の文字列の取得方法のサンプルを書いてみました。

domainupdown

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {
            // ひとつずつ追加
            domainUpDown1.Items.Add("apple");
            domainUpDown1.Items.Add("orange");

            // まとめて追加:その1(配列)
            string[] data = {"melon", "banana"};
            domainUpDown1.Items.AddRange(data);

            // まとめて追加:その2(List<>)
            List list = new List();
            list.Add("itigo");
            list.Add("suika");
            domainUpDown1.Items.AddRange(list);

            // 先頭要素を選択
            domainUpDown1.SelectedIndex = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(domainUpDown1.Text);
        }
    }
}
6月 14

フォントを選択するダイアログを表示する

フォントを選択するダイアログは
FontDialogコントロールとして既に用意されていますのでこれを利用します。

例としてFormにFontDialogコントロールを配置し
Buttonが押されたらButtonのテキストのフォントを選択するためのダイアログを表示します。

dialog_font

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

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

        private void button1_Click(object sender, EventArgs e)
        {
            // ダイアログを表示
            DialogResult ret = fontDialog1.ShowDialog();

            // OKボタンが押されたらボタンのテキストフォントを変更
            if (ret == DialogResult.OK)
                button1.Font = fontDialog1.Font;
        }
    }
}

主なプロパティー一覧

Color
	選択されたフォントの色
Font
	選択されたフォント
FontMustExist
	規定値:false
	存在しないフォントを選択した場合、警告を表示するか否か
MaxSize
MinSize
	規定値:0
	指定できるフォントの最大サイズと最小サイズ。制限しない場合は0
ShowApply
	規定値:false
	適用ボタンを表示するか否か
ShowColor
	規定値:false
	色の選択を表示するか否か
ShowEffects
	規定値:true
	取り消し線、下線、色の選択などの文字飾りグループを表示するか否か
ShowHelp
	規定値:false
	ヘルプボタンを表示するか否か
6月 14

色を選択するダイアログを表示する

色を選択するダイアログは
ColorDialogコントロールとして既に用意されていますのでこれを利用します。

例としてFormにColorDialogコントロールを配置し
Buttonが押されたらButtonの背景色を選択するためのダイアログを表示します。

dialog_color

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

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

        private void button1_Click(object sender, EventArgs e)
        {
            // 初期カラー設定
            colorDialog1.Color = button1.BackColor;

            // カスタムカラーを設定できるようにするか否か
            colorDialog1.AllowFullOpen = true;

            // ダイアログを表示
            DialogResult ret = colorDialog1.ShowDialog();

            // OKボタンが押されたらボタンの背景色を選択された色に変更
            if (ret == DialogResult.OK)
                button1.BackColor = colorDialog1.Color;
        }
    }
}
6月 14

フォルダを選択ダイアログを表示する

フォルダを選択ダイアログは
FolderBrowserDialogコントロールとして既に用意されていますのでこれを利用します。

例としてFormにFolderBrowserDialogコントロールを配置し
Buttonが押されたらフォルダを選択するためのダイアログを表示します。

dialog_folder

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

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

        private void button1_Click(object sender, EventArgs e)
        {
            // ダイアログに表示する説明文
            folderBrowserDialog1.Description = "フォルダを選択してください。";

            // 新しいフォルダを作るボタンを表示するか否か
            folderBrowserDialog1.ShowNewFolderButton = false;

            // 初期フォルダはどこか(デスクトップが初期値)
            folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;

            // ダイアログを表示
            DialogResult ret = folderBrowserDialog1.ShowDialog();

            // OKボタンが押されたら選択されたフォルダを表示
            if (ret == DialogResult.OK)
                MessageBox.Show(folderBrowserDialog1.SelectedPath);
        }
    }
}