6月 14

チェック状態の取得/設定(網掛け状態)

Checkedプロパティーの真偽値(true:false)を
取得/設定することで可能です。

また、これと連動して
CheckStateプロパティーの値も変更されます。

似たようなプロパティーですが
CheckStateプロパティーには
もう1つの目的があります。
これにIndeterminateを設定することで
チェックボックスを網掛け状態にすることができます。
(チェックはされているが、未確定な状態)

// チェック状態にする
checkBox1.Checked = true;

// チェック状態を不確定に(網掛け)
checkBox1.CheckState = CheckState.Indeterminate;
6月 14

外観をボタンのようにする

デフォルトでは
チェックボックスの外観は□のような矩形ですが
これをボタンのようにするしたい場合は
AppearanceプロパティーにButtonを指定します。

実行時に変更するケースはほとんど無いと思うので
デザイン時にプロパティーを変更します。

// 外観をボタンに変更
checkBox1.Appearance = Appearance.Button;

// 外観を元に戻す
checkBox1.Appearance = Appearance.Normal;
6月 14

コンテキストメニュー(右クリックメニュー)の使い方

コンテキストメニュー(右クリックメニュー)を使うには
ContextMenuStripコントロールをFormにドロップして配置します。

contextmenu

ここでは例としてForm上で右クリックするとContextMenuを表示し、
閉じるを選択するとFormをCloseしてみます。

まずContextMenuStripを表示させたいコントロール(ここではForm)の
ContextMenuStripプロパティーにContextMenuStrip1を設定します。

contextmenu_prop

これだけで、Form上で右クリックするとメニューが表示されます。

次に
ContextMenuStripの項目として【閉じる】をデザイナで入力し
【閉じる】メニューをダブルクリックするとClick時のイベントハンドラが追加されます。
後はこの中にメニュ選択時の処理を記述するだけです。

Form以外にも他コントロールやタスクトレイアイコンにも応用できます。

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 閉じるToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
6月 14

項目を追加する / 項目を選択する / 選択されている項目を取得する

項目を追加する場合は
ItemsコレクションのAdd関数で項目を追加します。

項目を選択する場合は
SelectedIndexプロパティーに選択したい項目の0からはじまるインデックスを指定します。

選択されている項目を取得する場合も同様に
SelectedIndexを参照します。

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)
        {
            // テキスト部分を編集できないDropDownListにします
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

            // 項目を追加します
            comboBox1.Items.Add("りんご");
            comboBox1.Items.Add("みかん");
            comboBox1.Items.Add("すいか");

            // 初期状態でインデックス0番を選択します
            comboBox1.SelectedIndex = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 選択されていれば
            if (comboBox1.SelectedIndex >= 0)
            {
                // テキストを表示します
                MessageBox.Show(comboBox1.Text);
            }
        }
    }
}
6月 14

項目を追加する / 項目を選択する / 選択されている項目を取得する

項目を追加する場合は
ItemsコレクションのAdd関数で項目を追加します。

項目を選択する場合は
SelectedIndexプロパティーに選択したい項目の0からはじまるインデックスを指定します。

選択されている項目を取得する場合も同様に
SelectedIndexを参照します。

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)
        {
            // テキスト部分を編集できないDropDownListにします
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

            // 項目を追加します
            comboBox1.Items.Add("りんご");
            comboBox1.Items.Add("みかん");
            comboBox1.Items.Add("すいか");

            // 初期状態でインデックス0番を選択します
            comboBox1.SelectedIndex = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 選択されていれば
            if (comboBox1.SelectedIndex >= 0)
            {
                // テキストを表示します
                MessageBox.Show(comboBox1.Text);
            }
        }
    }
}
6月 14

項目を追加する / 項目を選択する / 選択されている項目を取得する

項目を追加する場合は
ItemsコレクションのAdd関数で項目を追加します。

項目を選択する場合は
SelectedIndexプロパティーに選択したい項目の0からはじまるインデックスを指定します。

選択されている項目を取得する場合も同様に
SelectedIndexを参照します。

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)
        {
            // テキスト部分を編集できないDropDownListにします
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

            // 項目を追加します
            comboBox1.Items.Add("りんご");
            comboBox1.Items.Add("みかん");
            comboBox1.Items.Add("すいか");

            // 初期状態でインデックス0番を選択します
            comboBox1.SelectedIndex = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 選択されていれば
            if (comboBox1.SelectedIndex >= 0)
            {
                // テキストを表示します
                MessageBox.Show(comboBox1.Text);
            }
        }
    }
}
6月 14

クリックイベントを発生させる

ボタンをマウスやキーボードから押した場合
Click イベントが発生しますが
これをプログラムから【押したことにしたい】場合があります。

あまり良い例ではありませんが、例えば、
文書を保存するSaveボタンを作ったとします。
Saveボタンを押すとClickイベントハンドらが呼び出され、文書を保存しますが
定期的に(10分に1回などにも)Save処理を行いたいとします。
この時、タイマーを利用して10分に1回、Saveボタンを【押したことにしたい】場合

Buttonコントロールの
PerformClick 関数をコールします。

    button1.PerformClick();	// button1コントロールのClickイベントを発生させる
6月 14

テキストの表示位置を設定する

ボタン内のテキスト表示位置を設定する場合は
TextAlign プロパティーの値を変更します。
通常は MiddleCenter です。

通常はプログラムからではなく
デザイン画面からプロパティーで設定することが多いと思います。

button_textalign

上のように、9種類から選択します。
設定を変更すると、デザイン画面にも反映されるので解りやすいです。

もちろん、プログラムから変更することも可能です。
その場合は下記のようになります。

    button1.TextAlign = ContentAlignment.MiddleCenter;  // 中断中央(デフォルト)の場合
    button1.TextAlign = ContentAlignment.TopLeft;       // 左上の場合
6月 14

デフォルトボタン/キャンセルボタンを設定する

フォーム上の
デフォルトボタン(Enterキー/Spaceキーで押されるボタン)
キャンセルボタン(ESCキーで押されるボタン)
を設定するには

フォームの
AcceptButton, CancelButtonプロパティーに
それぞれボタン名を指定します。

【補足】
フォーム上に複数のボタンが存在し、
デフォルトボタン以外のボタンがフォーカスを持つ場合は
フォーカスを持つボタンがデフォルトで押されます。

this.AcceptButton = button1;
this.CancelButton = button2;
6月 14

押されたままの状態にする

ボタンを押すと凹んだような外観になりますが
そのまま凹んだ外観をキープしたい場合は
ボタンコントロールではなく
チェックボックスコントロールを使います。
(チェックボックスの節を参照してください)

チェックボックスの外観を
ボタンのように変更することで
押された際、凹んだままのボタンを実装可能です。

チェックボックスコントロールの
Appearanceプロパティーに列挙体のButtonを設定します。