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">出来高データ</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; }