6月 14

名前を付けて保存ダイアログを表示する

名前を付けて保存ためのダイアログは
SaveFileDialogコントロールとして既に用意されていますのでこれを利用します。

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

dialog_save

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)
        {
            // ダイアログのタイトルを指定
            saveFileDialog1.Title = "ファイルを保存";

            // 初期フォルダを指定
            saveFileDialog1.InitialDirectory = @"c:\";

            // 初期ファイル名
            saveFileDialog1.FileName = string.Empty;

            // ファイルが存在するかどうかチェックする
            saveFileDialog1.CheckFileExists = true;

            // 拡張子が入力されなければ自動で付与するか否か
            saveFileDialog1.AddExtension = true;

            // ファイルが既に存在する場合警告するか否か
            saveFileDialog1.OverwritePrompt = true;

            // ファイルの種類、拡張子のフィルターを設定
            saveFileDialog1.Filter =
                "すべてのファイル(*.*)|*.*|" +
                "テキストファイル(*.txt)|*.txt";

            // 初期状態で選択されているフィルターは何番目か
            // インデックスは1からはじまるので注意
            saveFileDialog1.FilterIndex = 2;

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

            // 【保存】ボタンで閉じられていれば選択されているファイル名を表示
            if (ret == DialogResult.OK)
                MessageBox.Show(saveFileDialog1.FileName);
        }
    }
}
6月 14

ファイルを開くダイアログを表示する

ファイルを開くためのダイアログは
OpenFileDialogコントロールとして既に用意されていますのでこれを利用します。

例としてFormにOpenFileDialogコントロールを配置し
Buttonが押されたらテキストファイルを開くダイアログを表示してみます。

dialog_open

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)
        {
            // ダイアログのタイトルを指定
            openFileDialog1.Title = "ファイルを選んでください";

            // 初期フォルダを指定
            openFileDialog1.InitialDirectory = @"c:\";

            // 初期ファイル名
            openFileDialog1.FileName = string.Empty;

            // ファイルが存在するかどうかチェックする
            openFileDialog1.CheckFileExists = true;

            // 複数選択をするか否か
            openFileDialog1.Multiselect = false;

            // ファイルの種類、拡張子のフィルターを設定
            openFileDialog1.Filter =
                "すべてのファイル(*.*)|*.*|" +
                "テキストファイル(*.txt)|*.txt";

            // 初期状態で選択されているフィルターは何番目か
            // インデックスは1からはじまるので注意
            openFileDialog1.FilterIndex = 2;

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

            // 【開く】ボタンで閉じられていれば選択されているファイル名を表示
            if (ret == DialogResult.OK)
                MessageBox.Show(openFileDialog1.FileName);
        }
    }
}
6月 14

DateTimePickerの使い方

DateTimePickerは日付入力を行う際に便利なコントロールです。
Formに貼り付けるだけですぐに使えます。

日時はDateTime型のValueプロパティーを設定・参照します。

datetimepicker

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)
        {
            // 年月日を設定
            DateTime date = new DateTime(2008,7,31);
            dateTimePicker1.Value = date;
        }
    }
}
6月 14

行を削除する

DataGridViewの行を削除する例です。
RowsコレクションのRemove関数、RemoveAt関数を利用します。

            // 最初の行を削除
            dataGridView1.Rows.RemoveAt(0);

            // 削除する行を指定して削除
            DataGridViewRow row = dataGridView1.Rows[0];
            dataGridView1.Rows.Remove(row);
6月 14

行を追加する

チェックボックスとテキストボックスを列に持つ
DataGridViewの行を追加する例です。

object型の配列で1行分のデータを用意し
それをRowsコレクションのAdd関数で追加しています。

dgv_addrow

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)
        {
            for(int i = 0; i < 10; i ++)
            {
                object[] row = { true, "りんご" + i.ToString() };
                dataGridView1.Rows.Add(row);
            }
        }
    }
}
6月 14

セルを読み取り専用にする

DataGridViewのセルを読み取り専用にするには
ReadOnlyプロパティーにtrueを設定します。
(解除の場合は逆にfalseを設定)

            // 指定セルを読み取り専用にする
            dataGridView1[0, 0].ReadOnly = true;

            // 全体を読み取り専用にする
            dataGridView1.ReadOnly = true;
6月 14

カレントセルを取得、設定する

DataGridViewの現在選択中のカレントセルを取得、設定するには
CurrentCellプロパティーを利用します。

            // カレントセルの値を参照
            dataGridView1.CurrentCell.Value;        // 値
            dataGridView1.CurrentCell.RowIndex;     // 行
            dataGridView1.CurrentCell.ColumnIndex;  // 列
            dataGridView1.CurrentCell.ReadOnly;     // 読み取り専用か否か

            // カレントセルを変更
            dataGridView1.CurrentCell = dataGridView1[0, 0];
6月 14

DataGridViewとは

DataGridViewとは非常に柔軟なコントロールで
スプレッドシートやExcelの表に近い使い方が可能です。

Formに貼り付けただけでは何も表示されませんが
DataGridViewのColumnsコレクションを編集することで列を追加可能です。

以下はデザイン画面でDataGridViewのColumnsコレクションを編集しているところです。

dgv_columns

列に追加できるコントロールは
・ボタン
・チェックボックス
・コンボボックス
・イメージ
・ラベル
・テキストボックス
となっています。

試しに一通り各コントロールを1種類1つずつ配置した結果が以下です。

dgv

入力と出力を兼ねているので
ひとつのコントロールで色々な事ができますが
反面、出来ることが多いので最初は使い方に戸惑うかもしれません。

実際の使い方は別節で個別に説明していきます。

6月 14

チェックされている項目を取得する

チェックされている項目を取得する場合は
CheckedItemsコレクションが便利です。

checkedlistbox

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)
        {
            // 項目を追加(チェック状態を指定しなければデフォルトでOFF)
            checkedListBox1.Items.Add("りんご");

            // 項目を追加(チェックON)
            checkedListBox1.Items.Add("みかん", true);

            // 項目を追加(チェックOFF)
            checkedListBox1.Items.Add("もも", false);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // チェックされている項目を列挙
            string msg = string.Empty;
            foreach (string item in checkedListBox1.CheckedItems)
                msg += item + "\r\n";

            MessageBox.Show(msg, "選択された項目一覧");
        }
    }
}
6月 14

項目を追加する

CheckedListBoxはListBoxの項目にチェックボックスが付いたコントロールです。
使い方もListBoxと似ています。

項目を追加するには
ItemsコレクションのAdd関数を利用します。

■チェックされている項目を取得する

チェックされている項目を取得する場合は
CheckedItemsコレクションが便利です。

checkedlistbox

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)
        {
            // 項目を追加(チェック状態を指定しなければデフォルトでOFF)
            checkedListBox1.Items.Add("りんご");

            // 項目を追加(チェックON)
            checkedListBox1.Items.Add("みかん", true);

            // 項目を追加(チェックOFF)
            checkedListBox1.Items.Add("もも", false);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // チェックされている項目を列挙
            string msg = string.Empty;
            foreach (string item in checkedListBox1.CheckedItems)
                msg += item + "\r\n";

            MessageBox.Show(msg, "選択された項目一覧");
        }
    }
}