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; }