C#メモ

[個人メモ] [アイデア] [仕事メモ] [Ruby] [Qt] [TstLink]

2017-05-19

Event

System.EventHandler

読み解くと、EventHandlerは、void型で、引数object型とEventArgs型をもつdelegateとある

http://gomocool.net/gomokulog/?p=255

EventArgs型

http://dobon.net/vb/dotnet/vb2cs/event.html

Eventの例


namespace WindowsFormsApplication1
{
    public delegate void myDelegate(string myTime);
    public class Class1
    {
        public event myDelegate myEvent;

        public void myMethod()
        {
            string msg = DateTime.Now.ToString("HH:mm:ss");
            myEvent(msg);
        }
    }
}

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

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Class1 myClass = new Class1();

        public Form1()
        {
            InitializeComponent();
        }

        private void myClass_myEvent(string updateTime)
        {
            this.label1.Text = updateTime;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myClass.myEvent+= new myDelegate(myClass_myEvent);
            myClass.myMethod();
        }
    }
}

Event

System.EventHandler

読み解くと、EventHandlerは、void型で、引数object型とEventArgs型をもつdelegateとある

http://gomocool.net/gomokulog/?p=255

EventArgs型

http://dobon.net/vb/dotnet/vb2cs/event.html

Eventの例


namespace WindowsFormsApplication1
{
    public delegate void myDelegate(string myTime);
    public class Class1
    {
        public event myDelegate myEvent;

        public void myMethod()
        {
            string msg = DateTime.Now.ToString("HH:mm:ss");
            myEvent(msg);
        }
    }
}

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

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Class1 myClass = new Class1();

        public Form1()
        {
            InitializeComponent();
        }

        private void myClass_myEvent(string updateTime)
        {
            this.label1.Text = updateTime;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myClass.myEvent+= new myDelegate(myClass_myEvent);
            myClass.myMethod();
        }
    }
}

2017-05-18

フォルダ選択ダイヤログ

http://dobon.net/vb/dotnet/form/folderdialog.html

//FolderBrowserDialogクラスのインスタンスを作成
FolderBrowserDialog fbd = new FolderBrowserDialog();

//上部に表示する説明テキストを指定する
fbd.Description = "フォルダを指定してください。";
//ルートフォルダを指定する
//デフォルトでDesktop
fbd.RootFolder = Environment.SpecialFolder.Desktop;
//最初に選択するフォルダを指定する
//RootFolder以下にあるフォルダである必要がある
fbd.SelectedPath = @"C:\Windows";
//ユーザーが新しいフォルダを作成できるようにする
//デフォルトでTrue
fbd.ShowNewFolderButton = true;

//ダイアログを表示する
if (fbd.ShowDialog(this) == DialogResult.OK)
{
    //選択されたフォルダを表示する
    Console.WriteLine(fbd.SelectedPath);
}

2017-05-15

現在時刻

            label1.Text = System.DateTime.Now.ToShortDateString();
            label2.Text = System.DateTime.Now.ToShortTimeString();
            this.Text = System.DateTime.Now.ToString();

            string CurDateTime = System.DateTime.Now.ToString("yyyyMMdd_HHmmss");


2017-05-12

ファイル一覧取得クラス(Grep)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class ClsFile
    {
        /// <summary>
        /// ファイル一覧
        /// </summary>
        private ArrayList m_FileList = new ArrayList();
        /// <summary>
        /// 検索するフォルダパス
        /// </summary>
        private string m_FilePath;
        /// <summary>
        /// 検索するファイル名のワイルドカード
        /// </summary>
        private string m_WildCard = "*";
        /// <summary>
        /// ファイル一覧
        /// </summary>
        public ArrayList FileList
        {
            get
            {
                return m_FileList;
            }
            set
            {
                m_FileList = value;
            }
        }

        /// <summary>
        /// 検索するフォルダパス
        /// </summary>
        public string FilePath
        {
            get
            {
                return m_FilePath;
            }
            set
            {
                m_FilePath = value;
            }
        }

        /// <summary>
        /// 検索するファイル名のワイルドカード
        /// </summary>
        public string WildCard
        {
            get
            {
                return m_WildCard;
            }
            set
            {
                m_WildCard = value;
            }
        }

        /// <summary>
        /// ファイル一覧を取得
        /// </summary>
        public void getFile()
        {
            if (m_FilePath == null || m_FilePath == "")
            {
                m_FilePath = "";
                //FolderBrowserDialogクラスのインスタンスを作成
                FolderBrowserDialog fbd = new FolderBrowserDialog();

                //上部に表示する説明テキストを指定する
                fbd.Description = "フォルダを指定してください。";
                //ルートフォルダを指定する
                //デフォルトでDesktop
                fbd.RootFolder = Environment.SpecialFolder.Desktop;
                //最初に選択するフォルダを指定する
                //RootFolder以下にあるフォルダである必要がある
                fbd.SelectedPath = @"C:\Windows";
                //ユーザーが新しいフォルダを作成できるようにする
                //デフォルトでTrue
                fbd.ShowNewFolderButton = true;

                //ダイアログを表示する
                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    m_FilePath = fbd.SelectedPath;
                }
            }

            if (m_FilePath != "") {
                //指定フォルダ以下のファイルをすべて取得する
                //ワイルドカード"*"は、すべてのファイルを意味する
                try
                {
                    string[] files = System.IO.Directory.GetFiles(m_FilePath, m_WildCard, System.IO.SearchOption.AllDirectories);
                    m_FileList.AddRange(files);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }
}

2017-05-11

データベース操作クラス

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsFormsApplication1
{
    /// <summary>
    /// Access DataBase 操作クラス
    /// </summary>
    /// <remarks>
    ///  DATE       Name    Ver  Comment
    ///   2017/05/11 Hantani 1.00 新規作成(VB2010版より移植)
    /// </remarks>
    public class ClsDBTool
    {
        private OleDbConnection cn = new OleDbConnection();
        private OleDbCommand com = new OleDbCommand();
        private OleDbCommandBuilder cBuild = new OleDbCommandBuilder();
        private OleDbDataAdapter dAdp = new OleDbDataAdapter();
        private OleDbDataReader DRead ;
        /// <summary>
        /// SQL実行
        /// </summary>
        /// <param name="cmd">SQL文</param>
        public Boolean exeSQL(string cmd)
        {
            Boolean Ret = false;

            try
            {
                com = new OleDbCommand(cmd, cn);
                com.ExecuteNonQuery();
                Ret = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return Ret;
        }

        /// <summary>
        /// キーを元に別のレコードに値を設定する。
        /// </summary>
        /// <param name="TableName">テーブル名</param>
        /// <param name="RecordName">検索するフィールド名</param>
        /// <param name="Key">検索する値</param>
        /// <param name="DataRecordName">値を取得するフィールド名</param>
        /// <param name="rData">設定する値</param>
        public Boolean setValue(string TableName, string RecordName, string Key, string DataRecordName, string rData)
        {
            string mySql;
            Boolean Ret = false;

            mySql = "UPDATE " + TableName;
            mySql = mySql + " SET " + DataRecordName + "='" + rData + "' WHERE " + RecordName + "='" + Key + "'";
            Ret = exeSQL(mySql);

            return Ret;
        }

        /// <summary>
        /// キーを元に別のレコードの値を取得する
        /// </summary>
        /// <param name="TableName">テーブル名</param>
        /// <param name="RecordName">検索するフィールド名</param>
        /// <param name="Key">検索する値</param>
        /// <param name="DataRecordName">値を取得するフィールド名</param>
        public string getValue(string TableName, string RecordName, string Key, string DataRecordName)
        {
            string mySql;
            string Ret = "";

            mySql = "SELECT * FROM " + TableName;
            mySql = mySql + " WHERE " + RecordName + "='" + Key + "'";
            try{
                com = new OleDbCommand(mySql, cn);
                DRead = com.ExecuteReader();

                 int colum_no = DRead.GetOrdinal(DataRecordName); 

                if(DRead.Read()){
                    Ret = (string)DRead[DataRecordName];
                }else{
                    Ret = "";    //1件もデータが無い
                }
            }catch(Exception ex){
                MessageBox.Show(ex.Message);
            }
            return Ret;
        }

        /// <summary>
        /// データベース接続
        /// </summary>
        /// <param name="DBPath">データベースファイル名</param>
        public Boolean setDB(string DBPath)
        {
            Boolean Ret=false;

            try
            {
                cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source='" + DBPath + "';";
                if (cn.State != System.Data.ConnectionState.Open)
                {
                    cn.Open();
                    Ret = true;
                }
                else if (cn.State == System.Data.ConnectionState.Open)
                {
                    Ret = true;
                }
            }
            catch (Exception ex)
            {
                Ret = false;
                MessageBox.Show(ex.Message);
            }
            return Ret;
        }

        /// <summary>
        /// 1レコードのみの追加
        /// </summary>
        /// <param name="TableName">テーブル名</param>
        /// <param name="RecordName">設定するフィールド名</param>
        /// <param name="rData">設定する値</param>
        public Boolean addValue(string TableName, string RecordName, string rData)
        {
            Boolean Ret = false;

            Ret = exeSQL("INSERT INTO " + TableName + " (" + RecordName + ") VALUES ('" + rData + "');");
            return Ret;
        }

        /// <summary>
        /// データベース切断
        /// </summary>
        public Boolean CloseDB()
        {
            Boolean Ret = false;

            try
            {
                if (cn.State == System.Data.ConnectionState.Open)
                {
                    cn.Close();
                    Ret = true;
                }
                else if (cn.State == System.Data.ConnectionState.Closed)
                {
                    Ret = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                Ret = false;
            }
            return Ret;
        }
    }
}

テキストファイル操作クラス

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Collections;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class ClsTextFile
    {
        /// <summary>
        /// 1行毎の内容
        /// </summary>
        private ArrayList m_lines;
        /// <summary>
        /// ファイル名
        /// </summary>
        private string m_filename;

        public ClsTextFile()
        {
            m_lines = new ArrayList();
        }

        ~ClsTextFile()
        {
        }

        /// <summary>
        /// ファイル名(無い場合はダイアログを開く)
        /// </summary>
        public string filename
        {
            get
            {
                return m_filename;
            }
            set
            {
                m_filename = value;
            }
        }

        /// <summary>
        /// 1行毎の内容
        /// </summary>
        public ArrayList lines
        {
            get
            {
                return m_lines;
            }
            set
            {
                m_lines = value;
            }
        }

        /// <summary>
        /// ファイル読込
        /// </summary>
        public Boolean readFile()
        {
            bool Ret = false;

            if (m_filename == null)
            {
                m_filename = "";
            }

            if (m_filename == "")
            {
                OpenFileDialog openFileDialog1 = new OpenFileDialog();
                if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    m_filename = openFileDialog1.FileName;
                }
            }
            if (m_filename != "")
            {
                try
                {
                    string line;
                    System.IO.StreamReader sr = new System.IO.StreamReader(m_filename, Encoding.GetEncoding("Shift_JIS"));
                    while ((line = sr.ReadLine()) != null)
                    {
                        m_lines.Add(line);
                    }
                    sr.Close();
                    Ret = true;
                }
                catch (System.Exception ex)
                {
                    Ret = false;
                    MessageBox.Show(ex.Message);
                }
            }
            return Ret;
        }

        /// <summary>
        /// ファイル保存
        /// </summary>
        public bool writeFile()
        {
            bool Ret = false;

            if (m_filename == null)
            {
                m_filename = "";
            }

            if (m_filename == "")
            {
                SaveFileDialog SaveFileDialog1 = new SaveFileDialog();
                if (SaveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    m_filename = SaveFileDialog1.FileName;
                }
            }
            if (m_filename != "")
            {
                try
                {
                    System.IO.StreamWriter sw = new System.IO.StreamWriter(m_filename, false, System.Text.Encoding.GetEncoding("shift_jis"));
                    foreach (string line in m_lines)
                    {
                        sw.WriteLine(line);
                    }
                    //閉じる
                    sw.Close();
                    Ret = true;
                }
                catch (Exception ex)
                {
                    Ret = false;
                    MessageBox.Show(ex.Message);
                }
            }
            return Ret;
        }

        /// <summary>
        /// 読込データクリア
        /// </summary>
        public void clear()
        {
            m_lines.Clear();
        }

        /// <summary>
        /// ファイル追加保存
        /// </summary>
        public bool appendFile()
        {
            bool Ret = false;

            if (m_filename == "")
            {
                SaveFileDialog SaveFileDialog1 = new SaveFileDialog();
                if (SaveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    m_filename = SaveFileDialog1.FileName;
                }
            }
            if (m_filename != "")
            {
                try
                {
                    System.IO.StreamWriter sw = new System.IO.StreamWriter(m_filename, true, System.Text.Encoding.GetEncoding("shift_jis"));
                    foreach (string line in m_lines)
                    {
                        sw.WriteLine(line);
                    }
                    //閉じる
                    sw.Close();
                    Ret = true;
                }
                catch (Exception ex)
                {
                    Ret = false;
                    MessageBox.Show(ex.Message);
                }
            }
            return Ret;

        }
    }
}