private void Materials_getresponse(object sender)
        {
            ////資材NoのNameで識別して返答をセットする

            TextBox bx = (TextBox)sender;

            string itemtext = bx.Name.Substring(0, 9); //"Materials0" -> "Materials"
            int    index    = IndexSerch(bx);          //"Materials0" -> "0"


            string text = ReturnValue.straMaterials[index];

            if (DoubleRankResponse(sender, ref text, itemtext))
            {
                ReturnValue.strMaterials(text, index);
                if (text != "")
                {
                    SerchMaterials(ReturnValue, index);
                }
                else
                {
                    ReturnValue.iMaterialsNumber(1, index);
                }
            }
        }
        /// <summary>
        /// 資材の変更時に呼ばれて、袋に対するクリップを自動的に配置する
        /// </summary>
        /// <param name="sender">通知元Dekidaka_Data</param>
        private void SerchMaterials(Dekidaka_Data sender, int index)
        {
            Dekidaka_Data Data = sender as Dekidaka_Data;

            if (Data == null)
            {
                return;
            }


            //処理中はイベントを解除
            //ReturnValue.PropertyChanged -= DekidakaPropertyChanged;

            if (ModuleData.FG.Array != null)
            {
                //Arraylistの行数と列数をもらう
                List <string> csvField = new List <string>();
                csvField = ModuleData.FG.Array[0];

                int rows = ModuleData.FG.Array.Count;
                int cols = csvField.Count;


                int flag = -1;


                //文字列として比較する
                //for (int materials_count = 0; materials_count < 6 && flag == -1; materials_count++)
                //{
                //    if(Data.straMaterials[materials_count] == "" || Data.straMaterials[materials_count] == null)
                //    {
                //        continue;
                //    }

                for (int i = 0; i < rows && flag == -1; i++)
                {
                    csvField = ModuleData.FG.Array[i];


                    for (int j = 1; j < cols; j++)
                    {
                        if (csvField[j] == "")
                        {
                            break;
                        }

                        if (csvField[j] == Data.straMaterials[index])
                        {
                            flag = i;
                            break;
                        }
                    }
                }


                //}


                if (flag != -1)
                {
                    bool IsExist = false;
                    csvField = ModuleData.FG.Array[flag];

                    for (int materials_count = 0; materials_count < 6; materials_count++)
                    {
                        if (Data.straMaterials[materials_count] == csvField[0])
                        {
                            IsExist = true;
                            break;
                        }
                    }

                    if (!IsExist)
                    {
                        for (int materials_count = index; materials_count < 6; materials_count++)
                        {
                            if (Data.straMaterials[materials_count] == "" || Data.straMaterials[materials_count] == null)
                            {
                                Data.strMaterials(csvField[0], materials_count);

                                break;
                            }
                        }
                    }
                }
            }

            //終わったらイベントを再登録
            //ReturnValue.PropertyChanged += DekidakaPropertyChanged;
        }
        /// <summary>
        /// 発注先/品名/作業内容が変更された時に呼ばれ、マッチする資材を探す
        /// </summary>
        /// <param name="sender">出来高データ</param>
        private void SerchCCC(Dekidaka_Data sender)
        {
            Dekidaka_Data Data = sender as Dekidaka_Data;

            //nullなら帰る
            if (Data == null)
            {
                return;
            }


            //発注者・品名・作業内容に空白があるなら帰る
            if (Data.strContentsOfWork == "" || Data.strContentsOfWork == null ||
                Data.strCommodity == "" || Data.strCommodity == null ||
                Data.strCustomar == "" || Data.strCustomar == null)
            {
                return;
            }


            //処理中はイベントを解除
            //ReturnValue.PropertyChanged -= DekidakaPropertyChanged;


            //データが読み込まれていれば
            if (ModuleData.Materials.Array != null)
            {
                //Listの行数と列数をもらう
                List <string> csvField = new List <string>();
                csvField = ModuleData.Materials.Array[0];

                int rows = ModuleData.Materials.Array.Count;
                int cols = csvField.Count;

                int MatelialstrCol = 5;
                int MatelialnumCol = 6;



                //項目を見ていく
                for (int i = 1; i < rows; i++)
                {
                    csvField = ModuleData.Materials.Array[i];


                    //作業内容を見る
                    if (!IsMached(CheckRegEx(csvField[2]), Data.strContentsOfWork == null ? "" : Data.strContentsOfWork))
                    {
                        continue;
                    }

                    //品名を見る
                    if (!IsMached(CheckRegEx(csvField[1]), Data.strCommodity == null ? "" : Data.strCommodity))
                    {
                        continue;
                    }

                    //得意先がマッチするか見る
                    if (!IsMached(CheckRegEx(csvField[0]), Data.strCustomar == null ? "" : Data.strCustomar))
                    {
                        continue;
                    }

                    //サイズを見る
                    if (!IsMached(CheckRegEx(csvField[3]), Data.strSize == null ? "" : Data.strSize))
                    {
                        continue;
                    }

                    //産地を見る
                    if (!IsMached(CheckRegEx(csvField[4]), Data.strProductionArea == null ? "" : Data.strProductionArea))
                    {
                        continue;
                    }


                    //全てマッチしたら資材と数を入力する
                    for (int j = 0; j < 3; j++)
                    {
                        string MateName = csvField[MatelialstrCol + j * 2];

                        if (MateName == "")
                        {
                            break;
                        }


                        //既に同じ資材がないかチェックする
                        bool IsExist = false;

                        for (int materials_count = 0; materials_count < 6; materials_count++)
                        {
                            if (Data.straMaterials[materials_count] == MateName)
                            {
                                IsExist = true;
                                break;
                            }
                        }

                        if (IsExist)
                        {
                            continue;
                        }

                        for (int materials_count = 0; materials_count < 6; materials_count++)
                        {
                            if (Data.straMaterials[materials_count] == "" || Data.straMaterials[materials_count] == null)
                            {
                                //資材名
                                Data.strMaterials(MateName, materials_count);

                                //数
                                int mnum;
                                if (int.TryParse(csvField[MatelialnumCol + j * 2], out mnum))
                                {
                                    Data.iMaterialsNumber(mnum, materials_count);
                                }
                                else
                                {
                                    Data.iMaterialsNumber(1, materials_count);
                                }


                                break;
                            }
                        }
                    } //for j

                    //ループを終える
                    //break;
                } //for i
            }     // if array


            //終わったらイベントを再登録
            //ReturnValue.PropertyChanged += DekidakaPropertyChanged;
        }