6月 14

ビットマップなどのイメージ(絵)を張り付ける

ボタンにテキストではなく、イメージを張り付けるには
Imageプロパティーにビットマップファイルなどの
ファイル名を指定します。

なお、イメージの配置位置は
ImageAlignプロパティーに
位置の列挙体を設定することで変更可能です。

イメージのファイル形式は
ビットマップ(.bmp)の他に
アイコン(.ico)や、PNG、JPG、GIFなどがありますので色々試してみてください。

【補足】
デザイン時からイメージを張り付けたい場合は
Imageプロパティーの…ボタンをクリックし、
目的の画像ファイルを選択してください。

また、イメージのみ表示して
ボタン上のテキストが不要な場合は
Textプロパティーの内容を”"としてください。

例:button1.Text = “”;

// ボタンに張り付けるイメージのファイル名を指定します。
// ファイルが存在しない場合は
// System.IO.FileNotFoundException 例外が発生します。
button1.Image = System.Drawing.Image.FromFile(@"c:\unko.bmp");

// 表示位置は中央
button1.ImageAlign = System.Drawing.ContentAlignment.MiddleCenter;
6月 14

ボタンを有効/無効にする(押せる/押せないようにする)

ボタンに限らずですが
コントロールを有効、無効にする場合は
Enabled プロパティーに true あるいは false を設定します。

true:有効
false:無効

です。
下図では、左のボタンが有効、右のボタンが無効です。

デザイン時にEnabledプロパティーを設定
またはプログラムからEnabledプロパティーを設定します。

button_enable

    private void Form1_Load(object sender, EventArgs e)
    {
        button1.Enabled = true;     // 押せる状態に
        button2.Enabled = false;    // 押せない状態に
    }
6月 13

フォームで押されたボタンの種類を表示元で取得する

下図のようなフォームの表示を例に
フォームで押されたボタンの種類を表示元で取得するサンプルを示します。

Form1よりForm2を呼び出し、
Form2が閉じられた際に
Form2で押されたボタンの種類を
Form1側(表示元)で取得します。

例)

    Form1
    ┏━━━━━━━━━━━┓
    ┃                      ┃
    ┃                      ┃
    ┃┏━━━━┓          ┃
    ┃┃button1 ┃          ┃
    ┃┗━━━━┛          ┃
    ┗━━━━━━━━━━━┛
    button1押下でForm2を表示

            ↓Form2を表示

    Form2
    ┏━━━━━━━━━━━━┓
    ┃                        ┃
    ┃                        ┃
    ┃┏━━━┓  ┏━━━━┓┃
    ┃┃  OK  ┃  ┃ Cancel ┃┃
    ┃┗━━━┛  ┗━━━━┛┃
    ┗━━━━━━━━━━━━┛
    いずれかのボタン押下で閉じる。

【解説】
呼び出し元では、フォームが閉じられた後で
DialogResultプロパティーの値を参照することで
何のボタンが押されたのかを判断します。

呼び先では、各ボタンのDialogResultプロパティーに
DialogResult列挙型の値をあらかじめ設定しておくことで
呼び出し元に最後に押されたボタンの種類を通知します。

//-------------------------------------
// Form1のソース
//-------------------------------------
private void button1_Click(object sender, System.EventArgs e)
{
    Form2 f2 = new Form2();

    // Form2をモーダル表示
    f2.ShowDialog();

    // Form2が閉じられた後、どのボタンが押されたのか判定
    switch( f2.DialogResult )
    {
        case DialogResult.OK:
            MessageBox.Show( "OK", "押されたボタンは" );
            break;
        case DialogResult.Cancel:
            MessageBox.Show( "Cancel", "押されたボタンは" );
            break;
    }
}

//-------------------------------------
// Form2のソース
//-------------------------------------
private void Form2_Load(object sender, System.EventArgs e)
{
    button1.DialogResult = DialogResult.OK;
    button2.DialogResult = DialogResult.Cancel;
}