コード例 #1
0
        public SelectWindow(string sendedtext, string InputText = "")
        {
            //データコンテキスト用のデータの用意
            swContext = new SelectionData(48);


            Sentext = sendedtext;



            //パネルデータに実体があれば読み出して設定
            if (ModuleData.Panel.Array != null)
            {
                List <List <string> > csvData  = ModuleData.Panel.Array;
                DataTable             csvTable = ModuleData.Panel.Table;


                //csvの行数を保持 (csvData[index]が一行分のデータ)
                int csvRow      = csvTable.Rows.Count;
                int TargetColNo = -1; //目的のデータの列番号を入れる変数


                ////csvFieldでcsvData行の中の列セルにアクセスする
                //List<string> csvField = csvData[0];//1行目にアクセスして、データのヘッダ名を調べる

                ////親ウィンドウから送られた文字列でヘッダ名を検索する
                //for (int i = 0; i < csvField.Count; i++)
                //{
                //    string FieldText = (string)csvField[i];
                //    if (FieldText == sendedtext)
                //    {
                //        TargetColNo = i;
                //        break;

                //    }

                //}



                DataTable PanelData = new DataTable();

                try
                {
                    //パネルデータを抽出テキストの列で絞り込む
                    PanelData = csvTable.DefaultView.ToTable("PanelData", false, Sentext);
                }
                catch
                {
                    //見つからなかったらメッセージを表示
                    MessageBox.Show(sendedtext + "のデータが見つかりません");
                    TargetColNo = 0;
                }



                if (TargetColNo != 0)
                {
                    int count = 0;

                    foreach (DataRow drEle in PanelData.AsEnumerable())
                    {
                        string ftext = drEle.Field <string>(Sentext);

                        if (ftext != "")
                        {
                            swContext.bIsButtonEnable(true, count);

                            string[] txdata = ftext.Split('%');

                            swContext.strButtonText(txdata[0], count);

                            if (txdata.Count <string>() > 1)
                            {
                                int color = 0;
                                if (int.TryParse(txdata[1], out color))
                                {
                                    swContext.intButtonColor(color, count);
                                }
                                else
                                {
                                    swContext.intButtonColor(0, count);
                                }
                            }
                            else
                            {
                                swContext.intButtonColor(0, count);
                            }
                        }

                        count++;
                        if (count > 47)
                        {
                            break;
                        }
                    }



                    //拡張パネル設定
                    if (ModuleData.ExtPanel.Array != null)
                    {
                        csvData = ModuleData.ExtPanel.Array;

                        List <string> csvField;

                        //親ウィンドウから送られた文字列で拡張データのヘッダ名を検索する
                        int TargetRowNo = -1;

                        for (int i = 0; i < csvData.Count; i++)
                        {
                            csvField = csvData[i];
                            string FieldText = csvField[0];
                            if (FieldText == sendedtext)
                            {
                                TargetRowNo = i;
                                break;
                            }
                        }

                        //見つかったらパネルに設定
                        if (TargetRowNo != -1)
                        {
                            csvField = csvData[TargetRowNo];

                            for (int i = 1; i < csvField.Count; i++)
                            {
                                string ftext = csvField[i];

                                if (ftext != "")
                                {
                                    swContext.bIsButtonEnable(true, i + 43);

                                    string[] txdata = ftext.Split('%');

                                    swContext.strButtonText(txdata[0], i + 43);

                                    if (txdata.Count <string>() > 1)
                                    {
                                        int color = 0;
                                        if (int.TryParse(txdata[1], out color))
                                        {
                                            swContext.intButtonColor(color, i + 43);
                                        }
                                        else
                                        {
                                            swContext.intButtonColor(0, i + 43);
                                        }
                                    }
                                    else
                                    {
                                        swContext.intButtonColor(0, i + 43);
                                    }
                                }
                            }
                        }
                    }
                }


                swContext.FlushBottonColor();
            }
            else //パネルデータ無し
            {
                MessageBox.Show("パネルデータがありません");
            }


            //データコンテキストに設定
            DataContext = swContext;


            InitializeComponent();

            if (InputText != "")
            {
                this.textBox_Input.Text = InputText;
            }
            else
            {
                this.textBox_Input.Text = "自由入力";
            }

            result = true;
        }