[C#][Tips][コントロール] textプロパティクリア(TextBoxBase,ComboBox)

//*********************************************************
/// 
/// textプロパティクリア(TextBoxBase,ComboBox)
/// 
//*********************************************************
public static void mClearPropertyText(Control hParent)
{
    // hParent 内のすべてのコントロールを列挙する
    foreach (Control cControl in hParent.Controls)
    {
        // 列挙したコントロールにコントロールが含まれている場合は再帰呼び出しする
        if (cControl.HasChildren == true)
        {
            mClearPropertyText(cControl);
        }

        // コントロールの型が TextBoxBase からの派生型の場合は Text をクリアする
        if (cControl is TextBoxBase)
        {
            cControl.Text = string.Empty;
        }

        // コントロールの型が ComboBoxの場合は Text をクリアする
        if (cControl is ComboBox)
        {
            cControl.Text = string.Empty;
        }

    }
}

[C#][Tips][File] INIファイル

namespace libFILE_Ini
{
    //###########################
    /// [static]
    //###########################
    public static class clsProcS
    {
        //■□■□■□■□■□■□■□■□■□
        //■ DLL
        //■ 
        //■□■□■□■□■□■□■□■□■□
        //******************************************************************
        /// 
        //******************************************************************
        [DllImport("KERNEL32.DLL")]
        public static extern uint
            GetPrivateProfileString(
                                    string lpAppName,
                                    string lpKeyName, string lpDefault,
                                    StringBuilder lpReturnedString, uint nSize,
                                    string lpFileName
                                    );

        //******************************************************************
        /// 
        //******************************************************************
        [DllImport("KERNEL32.DLL", EntryPoint = "GetPrivateProfileStringA")]
        public static extern uint
            GetPrivateProfileStringByByteArray(
                                                string lpAppName,
                                                string lpKeyName, 
                                                string lpDefault,
                                                byte[] lpReturnedString, 
                                                uint nSize,
                                                string lpFileName
                                                );

        //******************************************************************
        /// 
        //******************************************************************
        [DllImport("KERNEL32.DLL")]
        public static extern uint
            GetPrivateProfileInt(
                                string lpAppName,
                                string lpKeyName, 
                                int nDefault, 
                                string lpFileName
                                );

        //******************************************************************
        /// 
        //******************************************************************
        [DllImport("KERNEL32.DLL")]
        public static extern uint WritePrivateProfileString(
                                                            string lpAppName,
                                                            string lpKeyName,
                                                            string lpString,
                                                            string lpFileName
                                                            );

        //■□■□■□■□■□■□■□■□■□
        //■ 
        //■□■□■□■□■□■□■□■□■□
        //******************************************************************
        /// 
        //******************************************************************
        public class clsINI_GetParam
        {
            public string sSection;
            public string sKey;
        }

        //******************************************************************
        /// 
        //******************************************************************
        public class clsINI_SetParam
        {
            public string sSection;
            public string sKey;
            public string sData;
        }

        //■□■□■□■□■□■□■□■□■□
        //■ 
        //■□■□■□■□■□■□■□■□■□
        //******************************************************************
        /// INIデータ取得
        //******************************************************************
        public static string mGetIniData(string strIniFile_fp, clsINI_GetParam INI_GetParam)
        {
            //==================================================
            // iniファイルから文字列を取得
            //==================================================
            StringBuilder sb = new StringBuilder(1024);
            GetPrivateProfileString(
                                    INI_GetParam.sSection,           // セクション名
                                    INI_GetParam.sKey,               // キー名    
                                    "",                             // 値が取得できなかった場合に返される初期値
                                    sb,                             // 格納先
                                    Convert.ToUInt32(sb.Capacity),  // 格納先のキャパ
                                    strIniFile_fp);                          // iniファイル名

            //==================================================
            // RETURN
            //==================================================
            return sb.ToString();
        }

        //******************************************************************
        /// INIデータ設定
        //******************************************************************
        public static uint mSetIniData(string strIniFile_fp, clsINI_SetParam INI_SetParam)
        {
            //==================================================
            //  ファイル
            //==================================================
            return WritePrivateProfileString(
                                            INI_SetParam.sSection,     // セクション名
                                            INI_SetParam.sKey,         // キー名
                                            INI_SetParam.sData,        // 書き込む値
                                            strIniFile_fp);           // iniファイル名

            //if (ret == 0)
            //    MessageBox.Show("失敗");
            //else
            //    MessageBox.Show("成功");
        }
    }

[C#][Tips][LINQ] 集計(最大,最小,平均,合計,要素数,アキュムレータ)


 //**********************************************
/// 
/// [LIST] 集計(最大,最小,平均,合計,要素数,アキュムレータ)
/// 
//**********************************************
public static void mAggregation()
{
    var ilList = new<int> List() { 11, 2, 23, 44, 29 };

    /* 最大 */
    Console.WriteLine(ilList.Max());

    /* 最小 */
    Console.WriteLine(ilList.Min());

    /* 平均 */
    Console.WriteLine(ilList.Average());
    
    /* 合計 */
    Console.WriteLine(ilList.Sum());
    
    /* 要素数 */
    Console.WriteLine(ilList.Count());

    /* アキュムレータ(最大) */
    /* アキュムレータ(累積器)関数で処理した結果(関数:Math.Max(now, next)) */
    // now:処理結果
    // next:配列を順に設定
    Console.WriteLine(ilList.Aggregate((now, next) => Math.Max(now, next)));

    /* 参考URL */
    //http://ameblo.jp/ns-programming-memo/entry-11064901160.html
    // http://d.hatena.ne.jp/gsf_zero1/20101005/p1
    // http://chomado.com/programming/c-sharp/c-aggregate%E3%82%92%E4%BD%BF%E3%81%86linq

    ilList = new <int> List() { 2, 3, 4, 5, 6 };
    Console.WriteLine(ilList.Aggregate((sum, i) => sum + i));
    // sum     , i  => sum , i 
    // (init) 0 , 2  =>  0  + 2 =  2 (=sum)
    //2 , 3  =>  2  + 3 =  5 (=sum)   
    //5 , 4  =>  5  + 4 =  9 (=sum)
    //9 , 5  =>  9  + 5 = 14 (=sum)
    //       14 , 6  => 14  + 6 = 20 (=sum)

    ilList = new <int>List() { 2, 3, 4, 5, 6 };
    Console.WriteLine(ilList.Aggregate(10,(sum, i) => sum + i));
    // sum     , i  => sum , i 
    // (init)10 , 2  => 10  + 2 = 12 (=sum)
    //       12 , 3  => 12  + 3 = 15 (=sum)   
    //       15 , 4  => 15  + 4 = 19 (=sum)
    //       19 , 5  => 19  + 5 = 24 (=sum)
    //       24 , 6  => 24  + 6 = 30 (=sum)

}

[C#][Tips][LINQ] OrderBy, ThenBy : 並び替え(sort)

/// 
/// OrderBy, ThenBy : 並び替え(sort)
/// 
public static void mSortr_01()
{
    //==========================
    /*  */
    //==========================
    var possrc_0 = new[] { 9, 6, 25, 7 };
    var sorted_0 = possrc_0.OrderBy(elem => elem).ToList();
    sorted_0.ForEach(c => Console.Write(c + ","));

    // 6,7,9,25,
    Console.WriteLine("");

    //==========================
    /*  */
    //==========================
    var possrc_1 = new[] { 9, 6, 25, 7 };
    var sorted_1 = possrc_1.OrderByDescending(elem => elem);

    foreach (var item in sorted_1)
    {
        Console.WriteLine(string.Join(",", item));
    }
    // 25,9,7,6
    Console.WriteLine("");

    //==========================
    /*  */
    //==========================
    var possrc = new[] 
    { 
        new { x = 1, y = 2 }, 
        new { x = 3, y = 4 }, 
        new { x = 1, y = 1 } 
    };
    var sorted = possrc.OrderBy(elem => elem.x).ThenBy(elem => elem.y);

    foreach (var item in sorted)
    {
        Console.WriteLine(string.Join(",", item.x, item.y));
    }
    // {{ x = 1, y = 1 }, { x = 1, y = 2 }, { x = 3, y = 4 }} 
    Console.WriteLine("");

    //==========================
    /*  */
    //==========================
    var possrc_3 = new[] 
    { 
        new { x = 1, y = 2 }, 
        new { x = 3, y = 4 }, 
        new { x = 1, y = 1 } 
    };
    var sorted_3 = possrc_3.OrderByDescending(elem => elem.x).ThenByDescending(elem => elem.y);

    foreach (var item in sorted_3)
    {
        Console.WriteLine(string.Join(",", item.x, item.y));
    }
    // {{ x = 3, y = 4 }, { x = 1, y = 2 }, { x = 1, y = 1 }} 

}

[C#][Tips] LINQ Where:抽出


///==================================
/// Where:条件を記載
/// 条件に応じて値を抽出
///==================================
public static void mFilter_01()
{
    //-------------------------------------------
    /* 余りが1(奇数):elem % 2 == 1 */
    //-------------------------------------------
    List ilSrc = new List { 3, 2, 9, 6 };
    var ilFiltered = (ilSrc.Where(elem => elem % 2 == 1)).ToList();
    ilFiltered.ForEach(c => Console.Write(c + ","));
    // {3, 9}  

    Console.WriteLine("");

    //-------------------------------------------
    /* 余りが1(奇数):elem % 2 == 1 */
    //-------------------------------------------
    var src = new[] { 3, 2, 9, 6 }; 
    var filtered = src.Where(elem => elem % 2 == 1); 
    foreach (var item in filtered)
    {
        Console.Write(item + ",");
    }
    // {3, 9}  
}

[C#][Tips] LINQ:Select

Select:対象を処理して、新しくインスタンスを生成。
(Whereは、対象を抽出)

///==================================
///Select : 写像(map)
/// 対象を処理して、新しくインスタンスを生成。
///==================================
public static void mMap_01()
{
    //-------------------------------------------
    /* 2倍:elem * 2 */
    //-------------------------------------------
    List ilSrc = new List { 3, 2, 9, 6 };
    var ilMapped = (ilSrc.Select(elem => elem * 2)).ToList();
    ilMapped.ForEach(c => Console.Write(c + ","));
    // {6, 4, 18, 12}  

    //-------------------------------------------
    /* 2倍:elem * 2 */
    //-------------------------------------------
    var src = new[] { 3, 2, 9, 6 };
    var mapped = src.Select(elem => elem * 2 );
    foreach (var item in mapped)
    {
        Console.Write(item + ",");
    }
    // {6, 4, 18, 12}  
}

[C#][Tips] プロセス(メモ帳制御:SendKey)

private void button6_Click(object sender, EventArgs e)
{
    //Processオブジェクトを作成する
    System.Diagnostics.Process p = new System.Diagnostics.Process();

    //起動するファイルを指定する
    p.StartInfo.FileName = "notepad.exe";

    //起動する
    p.Start();

    System.Threading.Thread.Sleep(1000);

    Microsoft.VisualBasic.Interaction.AppActivate("メモ帳");

    SendKeys.Send("キー入力{ENTER}テスト");
    SendKeys.Send("TAB{TAB}TAB");

    //ローカルコンピュータ上で実行されている"notepad"という名前の
    //すべてのプロセスを取得
    System.Diagnostics.Process[] ps =
        System.Diagnostics.Process.GetProcessesByName("notepad");

    //配列から1つずつ取り出す
    foreach (System.Diagnostics.Process pp in ps)
    {
        //IDとメインウィンドウのキャプションを出力する
        Console.WriteLine("{0}/{1}", pp.Id, pp.MainWindowTitle);
    }

}

[C#][Tips] List 宣言・インスタンス・初期値


//**********************************************
///
/// [LIST] 宣言・インスタンス・初期値
/// 
//**********************************************
public static void mList_Init()
{

    //==========================
    /* 宣言 */
    //==========================
     List<int> ilList;

    //==========================
    /* インスタンス */
    //==========================
    ilList = new List();
    ilList = new List(new int[3]);

    //==========================
    /* 初期値 */
    //==========================
    ilList = new List(new int[3]) { 1, 2, 3 };
    ilList = new List() { 1, 2, 3 };

    ilList.ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();

    ilList = new List(Enumerable.Repeat(9, 15));
    ilList.ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();

}

[C#][Tips] 配列 宣言・インスタンス・初期値

//**********************************************
/// [Array] 宣言・インスタンス・初期値
//**********************************************
public static void mArray_Init()
{

    //==========================
    /* 宣言 */
    //==========================
    int[] iaList;

    //==========================
    /* インスタンス */
    //==========================
    //iaList = new int[];  // err! 
    iaList = new int[5];

    //==========================
    /* 初期値 */
    //==========================
    iaList = new int[3] { 1, 2, 3 };
    iaList = new int[] { 1, 2, 3 };

    iaList.ToList().ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();

    iaList = Enumerable.Repeat(9, 15).ToArray();
    iaList.ToList().ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();

    string saList = new string('*',9);
    saList.ToList().ForEach(c => Console.Write(c + " : "));
    Console.WriteLine();
}

[C#][Tips] 配列の要素をTrim

private void 配列の要素をTrim()
{
    string str = "a; b  ;     c; d";

    string[] sa = Array.ConvertAll(str.Split(';'), delegate(string s) { return s.Trim(); });

    sa.ToList().ForEach(c => Console.Write(c+','));

}