{"id":2265,"date":"2018-04-13T07:18:07","date_gmt":"2018-04-12T22:18:07","guid":{"rendered":"http:\/\/okamurax.com\/?p=2265"},"modified":"2018-04-13T07:24:43","modified_gmt":"2018-04-12T22:24:43","slug":"c-%e4%bb%95%e5%85%a5%e7%ae%a1%e7%90%86%e4%bb%95%e5%85%a5%e5%b8%b3%e6%a5%ad%e5%8b%99%e7%94%a8","status":"publish","type":"post","link":"https:\/\/appbay.org\/?p=2265","title":{"rendered":"C# \u4ed5\u5165\u7ba1\u7406(\u4ed5\u5165\u5e33)\u696d\u52d9\u7528"},"content":{"rendered":"<p>\u696d\u52d9\u306b\u4f7f\u3048\u308b\u30bd\u30d5\u30c8\u3068\u3044\u3046\u3053\u3068\u3067\u4f5c\u6210\u3002<\/p>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing System.Windows.Forms;\r\n\r\nusing System.Data.OleDb;\r\n\r\nnamespace WindowsFormsApp1\r\n{\r\n    public partial class main_form : Form\r\n    {\r\n        setting setting;\r\n\r\n        public string form_type;\r\n        public main_form parent_form;\r\n\r\n        private void form_type_check()\r\n        {\r\n            setting_strings_main();\r\n\r\n            if (form_type == \"parts\")\r\n            {\r\n                setting_strings_parts();\r\n                this.Text = \"\u6750\u6599\u624b\u914d\u30de\u30b9\u30bf\";\r\n\r\n                this.FormClosed += new FormClosedEventHandler((object sender, FormClosedEventArgs e) =&gt; {\r\n                    if (null != parent_form) parent_form.Close();\r\n                });\r\n            }\r\n\r\n            if (form_type == \"parts_sub\")\r\n            {\r\n                setting_strings_parts_sub();\r\n                this.Text = \"\u6750\u6599\u624b\u914d\u30c6\u30fc\u30d6\u30eb\";\r\n            }\r\n\r\n            if (form_type == \"copy\")\r\n            {\r\n                setting_strings_copy();\r\n                this.Text = \"\u8907\u88fd\";\r\n            }\r\n\r\n            if (form_type == \"supply\")\r\n            {\r\n                setting_strings_supply();\r\n                this.Text = \"\u4ed5\u5165\u5148\u30de\u30b9\u30bf\";\r\n            }\r\n\r\n            if (form_type == \"sumup\")\r\n            {\r\n                setting_strings_sumup();\r\n                this.Text = \"\u96c6\u8a08\u8868\u793a\";\r\n            }\r\n\r\n            if (form_type == \"size\")\r\n            {\r\n                setting_strings_width();\r\n                this.Text = \"\u5e45\u8a2d\u5b9a\";\r\n            }\r\n\r\n            this.Width = setting.width;\r\n            this.Height = setting.height;\r\n        }\r\n\r\n        public main_form(string f = \"main\", main_form p = null)\r\n        {\r\n            form_type = f;\r\n            parent_form = p;\r\n\r\n            InitializeComponent();\r\n\r\n            setting = new setting();\r\n\r\n            form_type_check();\r\n\r\n            db_setting db = new db_setting(setting);\r\n            if (!db.load_check())\r\n            {\r\n                foreach (Control c in this.Controls) c.Enabled = false;\r\n                return;\r\n            }\r\n\r\n            setting.width_list = db.get_size_master();\r\n\r\n            setting.variable_type_dic = new Dictionary&lt;string, string&gt;();\r\n            for (int x = 0; x &lt; setting.control_variable_type.GetLength(0); x++)\r\n            {\r\n                setting.variable_type_dic.Add(setting.control_variable_type[x, 0], setting.control_variable_type[x, 1]);\r\n            }\r\n\r\n            this.create_controls();\r\n            this.set_button_event();\r\n            this.set_control_focus_event();\r\n            this.set_combobox_items();\r\n            this.set_main_menu();\r\n\r\n            dgv_setting dgv = new dgv_setting(((DataGridView)this.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"]), setting,form_type);\r\n            dgv.create_columns();\r\n            dgv.hide_columns();\r\n            dgv.read_only_columns();\r\n            dgv.change_flg_event();\r\n            dgv.basic_properties();\r\n            dgv.set_click_supplier_master_event();\r\n            dgv.set_click_context_event();\r\n            dgv.error_handle();\r\n            dgv.set_forcus_event();\r\n\r\n            if (form_type == \"sumup\")\r\n            {\r\n                dgv_load_sumup();\r\n            }\r\n            else\r\n            {\r\n                dgv_load();\r\n            } \r\n        }\r\n\r\n        private void set_main_menu()\r\n        {\r\n            if (form_type != \"main\") return;\r\n\r\n            MenuStrip ms = new MenuStrip();\r\n            ToolStripMenuItem tsm_menu;\r\n\r\n            tsm_menu = new ToolStripMenuItem();\r\n            tsm_menu.Text = \"\u4ed5\u5165\u5148\u30de\u30b9\u30bf(&amp;S)\";\r\n            tsm_menu.Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n                main_form f = new main_form(\"supply\", this);\r\n                f.ShowDialog();\r\n            });\r\n            ms.Items.Add(tsm_menu);\r\n\r\n            tsm_menu = new ToolStripMenuItem();\r\n            tsm_menu.Text = \"\u5e45\u8a2d\u5b9a(&amp;W)\";\r\n            tsm_menu.Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n                main_form f = new main_form(\"size\", this);\r\n                f.ShowDialog();\r\n            });\r\n            ms.Items.Add(tsm_menu);\r\n\r\n            this.Controls.Add(ms);\r\n\r\n        }\r\n\r\n        private void create_controls()\r\n        {\r\n            for (int x = 0; x &lt; setting.control_lists.GetLength(0); x++)\r\n            {\r\n                Control ctrl = null;\r\n\r\n                switch(setting.control_lists[x, 0])\r\n                {\r\n                    case \"l\":\r\n                        ctrl = new Label();\r\n                        break;\r\n                    case \"t\":\r\n                        ctrl = new TextBox();\r\n                        break;\r\n                    case \"c\":\r\n                        ctrl = new ComboBox();\r\n                        break;\r\n                    case \"b\":\r\n                        ctrl = new Button();\r\n                        break;\r\n                    case \"d\":\r\n                        ctrl = new DataGridView();\r\n                        break;\r\n                }\r\n                \r\n                ctrl.Name = setting.control_lists[x, 1];\r\n                ctrl.Top = int.Parse(setting.control_lists[x, 3]);\r\n                ctrl.Left = int.Parse(setting.control_lists[x, 4]);\r\n                ctrl.Width = int.Parse(setting.control_lists[x, 5]);\r\n                ctrl.Height = int.Parse(setting.control_lists[x, 6]);\r\n\r\n                if (setting.control_lists[x, 0] != \"d\")\r\n                {\r\n                    ctrl.Text = setting.control_lists[x, 2];\r\n                    ctrl.Font = new Font(\"MS UI Gothic\", int.Parse(setting.control_lists[x, 7]));\r\n                }\r\n\r\n                if (setting.control_lists[x, 8] == \"2\") ctrl.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;\r\n                this.Controls.Add(ctrl);\r\n            }\r\n        }\r\n\r\n        private void dgv_load_sumup()\r\n        {\r\n            DataGridView dgv = (DataGridView)this.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"];\r\n            db_setting db = new db_setting(setting);\r\n            db.main_table_attach_dgv2(build_query_sumup(), dgv);\r\n            visible_display_sumup();\r\n        }\r\n\r\n        private void dgv_load()\r\n        {\r\n            DataGridView dgv = (DataGridView)this.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"];\r\n            db_setting db = new db_setting(setting);\r\n            db.main_table_attach_dgv2(build_query(), dgv);\r\n            visible_display();\r\n        }\r\n        \r\n        private void visible_display_sumup()\r\n        {\r\n            DataGridView dgv = (DataGridView)this.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"];\r\n            for (int i = 0; i &lt; setting.column_headers.Length; i++)\r\n            {\r\n                string t = setting.column_headers[i];\r\n                if (t != \"\u91d1\u984d\" &amp;&amp; t != \"\u4ed5\u5165\u5148\" &amp;&amp; t != \"\u90e8\u9580\" &amp;&amp; t != \"\u6271\u3044\" &amp;&amp; t != \"\u533a\u5206\" &amp;&amp; t != \"\u7a0e\u533a\u5206\" &amp;&amp; t != \"\u4ed5\u5165\u6708\")\r\n                {\r\n                    dgv.Columns[t].Visible = false;\r\n                }\r\n            }\r\n        }\r\n\r\n        private void visible_display()\r\n        {\r\n            if (form_type != \"main\" &amp;&amp; form_type != \"copy\") return;\r\n\r\n            DataGridView dgv = (DataGridView)this.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"];\r\n\r\n            if (this.Controls[\"\u8868\u793a\u7a2e\u985e\"].Text == \"\u5168\u90e8\")\r\n            {\r\n                foreach (string h in setting.basic_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = true;\r\n                }\r\n                foreach (string h in setting.shipping_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = true;\r\n                }\r\n                foreach (string h in setting.material_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = true;\r\n                }\r\n            }\r\n\r\n            if (this.Controls[\"\u8868\u793a\u7a2e\u985e\"].Text == \"\u6750\u6599\u30fb\u5916\u6ce8\")\r\n            {\r\n                foreach (string h in setting.basic_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = true;\r\n                }\r\n                foreach (string h in setting.shipping_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = false;\r\n                }\r\n                foreach (string h in setting.material_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = true;\r\n                }\r\n            }\r\n\r\n            if (this.Controls[\"\u8868\u793a\u7a2e\u985e\"].Text == \"\u904b\u9001\")\r\n            {\r\n                foreach (string h in setting.basic_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = true;\r\n                }\r\n                foreach (string h in setting.shipping_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = true;\r\n                }\r\n                foreach (string h in setting.material_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = false;\r\n                }\r\n            }\r\n\r\n            if (this.Controls[\"\u8868\u793a\u7a2e\u985e\"].Text == \"\u6700\u5c0f\")\r\n            {\r\n                foreach (string h in setting.basic_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = true;\r\n                }\r\n                foreach (string h in setting.shipping_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = false;\r\n                }\r\n                foreach (string h in setting.material_headers)\r\n                {\r\n                    dgv.Columns[h].Visible = false;\r\n                }\r\n            }\r\n        }\r\n\r\n        private void dgv_new_row()\r\n        {\r\n            DataGridView dgv = (DataGridView)this.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"];\r\n            for (int i = 0; i &lt; dgv.Rows.Count; i++)\r\n            {\r\n                if(dgv.Rows[i].Cells[setting.id_header].Value == null)\r\n                {\r\n                    dgv.Rows.Add();\r\n                    return;\r\n                }\r\n            }\r\n            dgv.Rows.Clear();\r\n            dgv.Rows.Add();\r\n        }\r\n \r\n        private void set_combobox_items()\r\n        {\r\n            db_setting db = new db_setting(setting);\r\n\r\n            if (form_type == \"main\"|| form_type == \"parts\")\r\n            {\r\n                foreach (string target_column_name in setting.supplier_master_header)\r\n                {\r\n                    var cd_name_list = db.get_master_list2(target_column_name, setting.supplier_table_name);\r\n                    var name_list = cd_name_list.Select(x =&gt; x[1]).ToArray();\r\n                    ((ComboBox)this.Controls[target_column_name]).Items.AddRange(name_list);\r\n                }\r\n            }\r\n\r\n            if (form_type == \"main\" || form_type == \"copy\")\r\n            {\r\n                ComboBox ctrl = (ComboBox)this.Controls[\"\u8868\u793a\u7a2e\u985e\"];\r\n                foreach (string col in setting.display_type)\r\n                {\r\n                    ctrl.Items.Add(col);\r\n                }\r\n                ctrl.Text = setting.display_type[0];\r\n\r\n                ((ComboBox)this.Controls[\"\u8868\u793a\u7a2e\u985e\"]).SelectedValueChanged += new EventHandler((object sender, EventArgs e) =&gt; {\r\n                    visible_display();\r\n                });\r\n            }\r\n\r\n            if (form_type == \"main\" || form_type == \"copy\" || form_type == \"parts\" || form_type == \"supply\")\r\n            {\r\n                ComboBox ctrl = (ComboBox)this.Controls[\"\u4e00\u81f4\u7a2e\u985e\"];\r\n                ctrl.Items.Add(\"\u66d6\u6627\");\r\n                ctrl.Items.Add(\"\u5b8c\u5168\");\r\n                ctrl.Text = \"\u66d6\u6627\";\r\n            }\r\n\r\n        }\r\n\r\n        private void set_control_focus_event()\r\n        {\r\n            for (int i = 0; i &lt; setting.where_targes.Length; i++)\r\n            {\r\n                this.Controls[setting.where_targes[i]].KeyUp += new KeyEventHandler((object sender, KeyEventArgs e)=&gt; {\r\n                    if (e.Control &amp;&amp; e.KeyCode == Keys.Enter)\r\n                    {\r\n                        if (form_type == \"main\")\r\n                        {\r\n                            ((ComboBox)this.Controls[\"\u8868\u793a\u7a2e\u985e\"]).Focus();\r\n                        }\r\n                        ((Button)this.Controls[\"\u691c\u7d22\"]).PerformClick();\r\n                    }\r\n                });\r\n\r\n                this.Controls[setting.where_targes[i]].LostFocus += new EventHandler((object sender, EventArgs e) =&gt; {\r\n\r\n                    Control ctrl = (Control)sender;\r\n                    if (ctrl.Text == \"\")\r\n                    {\r\n                        ctrl.BackColor = SystemColors.Window;\r\n                    }\r\n                    else\r\n                    {\r\n                        ctrl.BackColor = Color.DodgerBlue;\r\n                    }\r\n\r\n                });\r\n            }\r\n\r\n            for (int i = 0; i &lt; setting.where_date_target.Length; i++)\r\n            {\r\n                this.Controls[setting.where_date_target[i]].KeyUp += new KeyEventHandler((object sender, KeyEventArgs e) =&gt; {\r\n                    if (e.Control &amp;&amp; e.KeyCode == Keys.Enter)\r\n                    {\r\n                        ((ComboBox)this.Controls[\"\u8868\u793a\u7a2e\u985e\"]).Focus();\r\n                        ((Button)this.Controls[\"\u691c\u7d22\"]).PerformClick();\r\n                    }\r\n                });\r\n\r\n                this.Controls[setting.where_date_target[i]].LostFocus += new EventHandler((object sender, EventArgs e) =&gt; {\r\n\r\n                    TextBox ctrl = ((TextBox)sender);\r\n\r\n                    if (ctrl.Text != \"_\") ctrl.Text = new parse_setting(\"d\", ctrl.Text).parse_result;\r\n                    if (ctrl.Text == \"\")\r\n                    {\r\n                        ctrl.BackColor = SystemColors.Window;\r\n                    }\r\n                    else\r\n                    {\r\n                        ctrl.BackColor = Color.DodgerBlue;\r\n                    }\r\n\r\n                });\r\n\r\n                this.Controls[\"_\" + setting.where_date_target[i]].KeyUp += new KeyEventHandler((object sender, KeyEventArgs e) =&gt; {\r\n                    if (e.Control &amp;&amp; e.KeyCode == Keys.Enter)\r\n                    {\r\n                        ((ComboBox)this.Controls[\"\u8868\u793a\u7a2e\u985e\"]).Focus();\r\n                        ((Button)this.Controls[\"\u691c\u7d22\"]).PerformClick();\r\n                    }\r\n                });\r\n\r\n                this.Controls[\"_\" + setting.where_date_target[i]].LostFocus += new EventHandler((object sender, EventArgs e) =&gt; {\r\n\r\n                    TextBox ctrl = ((TextBox)sender);\r\n\r\n                    ctrl.Text = new parse_setting(\"d\", ctrl.Text).parse_result;\r\n                    if (ctrl.Text == \"\")\r\n                    {\r\n                        ctrl.BackColor = SystemColors.Window;\r\n                    }\r\n                    else\r\n                    {\r\n                        ctrl.BackColor = Color.DodgerBlue;\r\n                    }\r\n\r\n                });\r\n            }\r\n        }\r\n\r\n        private string sql_string_parse(string q)\r\n        {\r\n            q = q.Replace(\"'\", \"\u2019\");\r\n            return q;\r\n        }\r\n\r\n        public string build_query_sumup()\r\n        {\r\n            string[] updated_header = new string[setting.column_headers.Length];\r\n            for (int i = 0; i &lt; setting.column_headers.Length; i++)\r\n            {\r\n                string t = setting.column_headers[i];\r\n                \r\n                if (t == \"\u91d1\u984d\")\r\n                {\r\n                    updated_header[i] = \"sum(\u91d1\u984d) as \u91d1\u984d\";\r\n                }\r\n                else if (t == \"\u4ed5\u5165\u5148\" || t == \"\u90e8\u9580\" || t == \"\u6271\u3044\" || t == \"\u533a\u5206\" || t == \"\u7a0e\u533a\u5206\" || t == \"\u4ed5\u5165\u6708\")\r\n                {\r\n                    updated_header[i] = setting.column_headers[i];\r\n                }\r\n                else\r\n                {\r\n                    updated_header[i] = \"'' as \" + setting.column_headers[i];\r\n                }\r\n            }\r\n\r\n            string select = \"select \" + string.Join(\",\", updated_header) + \" from \" + setting.main_table_name;\r\n            select = select + \" group by \u4ed5\u5165\u5148,\u90e8\u9580,\u6271\u3044,\u533a\u5206,\u7a0e\u533a\u5206,\u4ed5\u5165\u6708\";\r\n\r\n            string base_query = setting.main_form_instance.parent_form.build_query();\r\n            select = select.Replace(setting.main_table_name, \"( \" + base_query + \" )\");\r\n\r\n            return select;\r\n        }\r\n\r\n        public string build_query()\r\n        {\r\n            string match = \"\u66d6\u6627\";\r\n            if (form_type == \"main\" || form_type == \"copy\" || form_type == \"parts\" || form_type == \"supply\")\r\n            {\r\n                match = ((ComboBox)this.Controls[\"\u4e00\u81f4\u7a2e\u985e\"]).Text;\r\n            }\r\n \r\n\r\n            string select = \"select \" + string.Join(\",\", setting.column_headers) + \" from \" + setting.main_table_name;\r\n            string where = \"\";\r\n\r\n            List&lt;string&gt; where_form_text = new List&lt;string&gt;();\r\n            for(int i = 0; i &lt; setting.where_targes.Length; i++)\r\n            {\r\n                if (this.Controls[setting.where_targes[i]].Text == \"_\")\r\n                {\r\n                    where_form_text.Add(\"(\" + setting.where_targes[i] + \" is null or \" + setting.where_targes[i] + \" = '')\");\r\n                }\r\n                else if (this.Controls[setting.where_targes[i]].Text != \"\")\r\n                {\r\n                    if(match == \"\u5b8c\u5168\")\r\n                    {\r\n                        where_form_text.Add(setting.where_targes[i] + \" = '\" + sql_string_parse(this.Controls[setting.where_targes[i]].Text) + \"'\");\r\n                    }\r\n                    else\r\n                    {\r\n                        where_form_text.Add(setting.where_targes[i] + \" like '%\" + sql_string_parse(this.Controls[setting.where_targes[i]].Text) + \"%'\");\r\n                    }\r\n                }\r\n            }\r\n\r\n            if(where_form_text.Count &gt; 0)\r\n            {\r\n                where = \" where \";\r\n\r\n                for(int i = 0; i &lt; where_form_text.Count; i++)\r\n                {\r\n                    if(i == where_form_text.Count - 1)\r\n                    {\r\n                        where += where_form_text[i];\r\n                    }\r\n                    else\r\n                    {\r\n                        where += where_form_text[i] + \" and \";\r\n                    }\r\n                }\r\n            }\r\n\r\n            List&lt;string&gt; where_date_form_text = new List&lt;string&gt;();\r\n\r\n            for (int i = 0; i &lt; setting.where_date_target.Length; i++)\r\n            {\r\n                if (this.Controls[setting.where_date_target[i]].Text == \"_\")\r\n                {\r\n                    where_date_form_text.Add(setting.where_date_target[i] + \" is null\");\r\n                }\r\n                else if (this.Controls[setting.where_date_target[i]].Text != \"\" &amp;&amp; this.Controls[\"_\" + setting.where_date_target[i]].Text != \"\")\r\n                {\r\n                    where_date_form_text.Add(\"(\" + setting.where_date_target[i] + \" &gt;= #\" + this.Controls[setting.where_date_target[i]].Text + \"# and \" +\r\n                        setting.where_date_target[i] + \" &lt;= #\" + this.Controls[\"_\" + setting.where_date_target[i]].Text + \"#)\");\r\n                }\r\n                else if (this.Controls[setting.where_date_target[i]].Text != \"\" &amp;&amp; this.Controls[\"_\" + setting.where_date_target[i]].Text == \"\")\r\n                {\r\n                    where_date_form_text.Add(setting.where_date_target[i] + \" &gt;= #\" + this.Controls[setting.where_date_target[i]].Text + \"#\");\r\n                }\r\n                else if (this.Controls[setting.where_date_target[i]].Text == \"\" &amp;&amp; this.Controls[\"_\" + setting.where_date_target[i]].Text != \"\")\r\n                {\r\n                    where_date_form_text.Add(setting.where_date_target[i] + \" &lt;= #\" + this.Controls[\"_\" + setting.where_date_target[i]].Text + \"#\");\r\n                }\r\n            }\r\n\r\n            if (where_date_form_text.Count &gt; 0)\r\n            {\r\n                if (where == \"\")\r\n                {\r\n                    where = \" where \";\r\n                }\r\n                else if (where != \"\")\r\n                {\r\n                    where += \" and \";\r\n                }\r\n\r\n                for (int i = 0; i &lt; where_date_form_text.Count; i++)\r\n                {\r\n                    if (i == where_date_form_text.Count - 1)\r\n                    {\r\n                        where += where_date_form_text[i];\r\n                    }\r\n                    else\r\n                    {\r\n                        where += where_date_form_text[i] + \" and \";\r\n                    }\r\n                }\r\n            }\r\n\r\n            if (where != \"\") select += where;\r\n            select += \" order by ID\";\r\n            \/\/todo sql\r\n            \/\/MessageBox.Show(select);\r\n            return select;\r\n        }\r\n    }\r\n\r\n    public class setting\r\n    {\r\n        public main_form main_form_instance;\r\n        public string connection_string;\r\n        public string[] column_headers;\r\n        public string id_header;\r\n        public string[,] control_values;\r\n        public string[,] control_variable_type;\r\n        public Dictionary&lt;string, string&gt; variable_type_dic;\r\n        public string[] where_targes;\r\n        public string[] where_date_target;\r\n        public string main_table_name;\r\n        public string supplier_table_name;\r\n        public string[] supplier_master_header;\r\n        public string change_flg_header;\r\n        public string[] hide_headers;\r\n        public string[] read_only_headers;\r\n        public string color_check_header;\r\n        public string parts_table_name;\r\n        public string[,] control_lists;\r\n        public string[,] main_parts_correspond;\r\n        public string[,] parts_sub_correspond;\r\n        public int width;\r\n        public int height;\r\n        public string[] display_type;\r\n        public string[] shipping_headers;\r\n        public string[] material_headers;\r\n        public string[] basic_headers;\r\n        public List&lt;string[]&gt; width_list;\r\n    }\r\n\r\n    public class db_setting\r\n    {\r\n        setting setting;\r\n        public db_setting(setting s)\r\n        {\r\n            setting = s;\r\n        }\r\n\r\n        public List&lt;string[]&gt; get_size_master()\r\n        {\r\n            List&lt;string[]&gt; size_master_list = new List&lt;string[]&gt;();\r\n            string sql = \"select \u5bfe\u8c61\u30d5\u30a9\u30fc\u30e0,\u5217\u540d,\u5e45 from \u5e45\u8a2d\u5b9a\";\r\n\r\n            try\r\n            {\r\n                using (OleDbConnection con = new OleDbConnection(setting.connection_string))\r\n                {\r\n                    con.Open();\r\n                    OleDbCommand cmd = new OleDbCommand(sql, con);\r\n                    using (OleDbDataReader dr = cmd.ExecuteReader())\r\n                    {\r\n                        while (dr.Read())\r\n                        {\r\n                            size_master_list.Add(new string[] {\r\n                                dr[\"\u5bfe\u8c61\u30d5\u30a9\u30fc\u30e0\"].ToString(),\r\n                                dr[\"\u5217\u540d\"].ToString(),\r\n                                dr[\"\u5e45\"].ToString()\r\n                            });\r\n                        }\r\n                    }\r\n                }\r\n                return size_master_list;\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                MessageBox.Show(e.Message);\r\n                return size_master_list;\r\n            }\r\n        }\r\n\r\n        public bool load_check()\r\n        {\r\n            try\r\n            {\r\n                using (OleDbConnection con = new OleDbConnection(setting.connection_string))\r\n                {\r\n                    con.Open();\r\n                    return true;\r\n                }\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                MessageBox.Show(e.Message);\r\n                return false;\r\n            }\r\n        }\r\n\r\n        private string sql_string_parse(string q)\r\n        {\r\n            q = q.Replace(\"'\", \"\u2019\");\r\n            return q ;\r\n        }\r\n\r\n        public void insert_update_dgv(DataGridView d)\r\n        {\r\n            List&lt;int&gt; insert_target_rows_index = new List&lt;int&gt;();\r\n            List&lt;int&gt; update_target_row_index = new List&lt;int&gt;();\r\n            List&lt;DataGridViewRow&gt; remove_target_rows = new List&lt;DataGridViewRow&gt;();\r\n\r\n            for (int i = 0; i &lt; d.Rows.Count; i++)\r\n            {\r\n                if(d.Rows[i].Cells[setting.change_flg_header].Value != null &amp;&amp;\r\n                   d.Rows[i].Cells[setting.change_flg_header].Value.ToString() == \"1\")\r\n                {\r\n                    if(d.Rows[i].Cells[setting.id_header].Value == null)\r\n                    {\r\n                        insert_target_rows_index.Add(i);\r\n                    }\r\n                    else\r\n                    {\r\n                        update_target_row_index.Add(i);\r\n                    }\r\n                    remove_target_rows.Add(d.Rows[i]);\r\n                } \r\n            }\r\n            \r\n            foreach (int row_index in update_target_row_index)\r\n            {\r\n                List&lt;string&gt; header_values_list = new List&lt;string&gt;();\r\n\r\n                for (int c = 0; c &lt; setting.column_headers.Length; c++)\r\n                {\r\n                    if (d.Columns[c].HeaderText != setting.id_header &amp;&amp; d.Columns[c].HeaderText != setting.change_flg_header)\r\n                    {\r\n                        string value = \"null\";\r\n                        if (d.Rows[row_index].Cells[c].Value != null &amp;&amp; d.Rows[row_index].Cells[c].Value.ToString() != \"\")\r\n                        {\r\n                            value = \"'\" + sql_string_parse(d.Rows[row_index].Cells[c].Value.ToString()) + \"'\";\r\n                        }\r\n                        header_values_list.Add(d.Columns[c].HeaderText + \"=\" + value);\r\n                    }\r\n                }\r\n\r\n                string update_sql = \"update \" + setting.main_table_name + \" set \" + string.Join(\",\", header_values_list) +\r\n                    \" where \" + setting.id_header + \" = \" + d.Rows[row_index].Cells[setting.id_header].Value.ToString();\r\n\r\n                try\r\n                {\r\n                    using (OleDbConnection con = new OleDbConnection(setting.connection_string))\r\n                    {\r\n                        con.Open();\r\n                        OleDbCommand cmd = new OleDbCommand(update_sql, con);\r\n                        cmd.ExecuteNonQuery();\r\n                    }\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    MessageBox.Show(e.Message);\r\n                    return;\r\n                }\r\n            }\r\n\r\n            foreach (int row_index in insert_target_rows_index)\r\n            {\r\n                List&lt;string&gt; header_list = new List&lt;string&gt;();\r\n                List&lt;string&gt; values_list = new List&lt;string&gt;();\r\n\r\n                for (int c = 0; c &lt; setting.column_headers.Length; c++)\r\n                {\r\n                    if(d.Columns[c].HeaderText != setting.id_header &amp;&amp; d.Columns[c].HeaderText != setting.change_flg_header)\r\n                    {\r\n                        if(d.Rows[row_index].Cells[c].Value != null &amp;&amp; d.Rows[row_index].Cells[c].Value.ToString() != \"\")\r\n                        {\r\n                            header_list.Add(d.Columns[c].HeaderText);\r\n                            values_list.Add(\"'\" + sql_string_parse(d.Rows[row_index].Cells[c].Value.ToString()) + \"'\");\r\n                        }\r\n                    }\r\n                }\r\n\r\n                string insert_sql = \"insert into \" + setting.main_table_name + \" (\" + string.Join(\",\", header_list) + \", modified) values (\"\r\n                    + string.Join(\",\", values_list) + \",'\" + DateTime.Now.ToString() + \"')\";\r\n\r\n                try\r\n                {\r\n                    using (OleDbConnection con = new OleDbConnection(setting.connection_string))\r\n                    {\r\n                        con.Open();\r\n                        OleDbCommand cmd = new OleDbCommand(insert_sql, con);\r\n                        cmd.ExecuteNonQuery();\r\n                    }\r\n                }\r\n                catch (Exception e)\r\n                {\r\n                    MessageBox.Show(e.Message);\r\n                    return;\r\n                }\r\n            }\r\n            main_table_attach_dgv2(setting.main_form_instance.build_query(),d);\r\n        }\r\n\r\n        public List&lt;string[]&gt; get_master_list2(string target_column_name, string target_table_name)\r\n        {\r\n            List&lt;string[]&gt; master_list = new List&lt;string[]&gt;();\r\n            string sql = \"select distinct \" + target_column_name + \"\u30b3\u30fc\u30c9,\" + target_column_name + \" from \" + target_table_name + \" where \" + target_column_name + \" is not null\";\r\n\r\n            try\r\n            {\r\n                using (OleDbConnection con = new OleDbConnection(setting.connection_string))\r\n                {\r\n                    con.Open();\r\n                    OleDbCommand cmd = new OleDbCommand(sql, con);\r\n                    using (OleDbDataReader dr = cmd.ExecuteReader())\r\n                    {\r\n                        while (dr.Read())\r\n                        {\r\n                            master_list.Add(new string[] { dr[target_column_name + \"\u30b3\u30fc\u30c9\"].ToString(), dr[target_column_name].ToString() });\r\n                        }\r\n                    }\r\n                }\r\n                return master_list;\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                MessageBox.Show(e.Message);\r\n                return master_list;\r\n            }\r\n        }\r\n\r\n        public void main_table_attach_dgv2(string sql, DataGridView dgv)\r\n        {\r\n            dgv.Rows.Clear();\r\n\r\n            try\r\n            {\r\n                using (OleDbConnection con = new OleDbConnection(setting.connection_string))\r\n                {\r\n                    con.Open();\r\n                    OleDbCommand cmd = new OleDbCommand(sql, con);\r\n                    using (OleDbDataReader dr = cmd.ExecuteReader())\r\n                    {\r\n                        List&lt;DataGridViewRow&gt; rows = new List&lt;DataGridViewRow&gt;();\r\n                        while (dr.Read())\r\n                        {\r\n                            string[] new_row_values = new string[setting.column_headers.Length];\r\n                            for (int i = 0; i &lt; setting.column_headers.Length; i++)\r\n                            {\r\n                                if (setting.variable_type_dic.ContainsKey(setting.column_headers[i]))\r\n                                {\r\n                                    parse_setting p;\r\n                                    switch (setting.variable_type_dic[setting.column_headers[i]])\r\n                                    {\r\n                                        case \"d\":\r\n                                            p = new parse_setting(\"d\", dr[setting.column_headers[i]].ToString());\r\n                                            new_row_values[i] = p.parse_result;\r\n                                            break;\r\n                                        case \"m\":\r\n                                            p = new parse_setting(\"m\", dr[setting.column_headers[i]].ToString());\r\n                                            new_row_values[i] = p.parse_result;\r\n                                            break;\r\n                                        case \"z\":\r\n                                            p = new parse_setting(\"z\", dr[setting.column_headers[i]].ToString());\r\n                                            new_row_values[i] = p.parse_result;\r\n                                            break;\r\n                                    }\r\n                                }\r\n                                else\r\n                                {\r\n                                    new_row_values[i] = dr[setting.column_headers[i]].ToString();\r\n                                }\r\n                            }\r\n                            DataGridViewRow row = new DataGridViewRow();\r\n                            row.CreateCells(dgv);\r\n                            row.SetValues(new_row_values);\r\n                            rows.Add(row);\r\n                        }\r\n                        dgv.Rows.AddRange(rows.ToArray());\r\n                    }\r\n                }\r\n                foreach (DataGridViewRow check_row in dgv.Rows)\r\n                {\r\n                    if (setting.color_check_header == \"\") break;\r\n\r\n                    if (check_row.Cells[setting.color_check_header].Value != null &amp;&amp;\r\n                        check_row.Cells[setting.color_check_header].Value.ToString() != \"\")\r\n                    {\r\n                        DateTime result;\r\n                        DateTime.TryParse(check_row.Cells[setting.color_check_header].Value.ToString(), out result);\r\n                        int m = result.Month;\r\n\r\n                        switch (m)\r\n                        {\r\n                            case 1:\r\n                                check_row.DefaultCellStyle.BackColor = Color.Salmon;\r\n                                break;\r\n                            case 2:\r\n                                check_row.DefaultCellStyle.BackColor = Color.LemonChiffon;\r\n                                break;\r\n                            case 3:\r\n                                check_row.DefaultCellStyle.BackColor = Color.SpringGreen;\r\n                                break;\r\n                            case 4:\r\n                                check_row.DefaultCellStyle.BackColor = Color.PowderBlue;\r\n                                break;\r\n                            case 5:\r\n                                check_row.DefaultCellStyle.BackColor = Color.Thistle;\r\n                                break;\r\n                            case 6:\r\n                                check_row.DefaultCellStyle.BackColor = Color.BurlyWood;\r\n                                break;\r\n                            case 7:\r\n                                check_row.DefaultCellStyle.BackColor = Color.HotPink;\r\n                                break;\r\n                            case 8:\r\n                                check_row.DefaultCellStyle.BackColor = Color.DarkSeaGreen;\r\n                                break;\r\n                            case 9:\r\n                                check_row.DefaultCellStyle.BackColor = Color.DeepSkyBlue;\r\n                                break;\r\n                            case 10:\r\n                                check_row.DefaultCellStyle.BackColor = Color.DarkSlateBlue;\r\n                                break;\r\n                            case 11:\r\n                                check_row.DefaultCellStyle.BackColor = Color.DarkOrange;\r\n                                break;\r\n                            case 12:\r\n                                check_row.DefaultCellStyle.BackColor = Color.Olive;\r\n                                break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                MessageBox.Show(e.Message);\r\n            }\r\n        }\r\n        \r\n        public void delete_dgv_row(string id)\r\n        {\r\n            try\r\n            {\r\n                using (OleDbConnection con = new OleDbConnection(setting.connection_string))\r\n                {\r\n                    con.Open();\r\n                    OleDbCommand cmd = new OleDbCommand(\"delete from \" + setting.main_table_name + \" where id = \" + id, con);\r\n                    cmd.ExecuteNonQuery();\r\n                }\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                MessageBox.Show(e.Message);\r\n            }\r\n        }\r\n    }\r\n\r\n    public partial class dgv_setting\r\n    {\r\n        DataGridView dgv;\r\n        setting setting;\r\n        string form_type;\r\n\r\n        public dgv_setting(DataGridView d, setting s, string f)\r\n        {\r\n            dgv = d;\r\n            setting = s;\r\n            form_type = f;\r\n        }\r\n\r\n        public void error_handle()\r\n        {\r\n            dgv.DataError += new DataGridViewDataErrorEventHandler((object sender, DataGridViewDataErrorEventArgs e)=&gt; {\r\n                e.Cancel = false;\r\n            });\r\n        }\r\n\r\n        public void hide_columns()\r\n        {\r\n            foreach (string c in setting.hide_headers)\r\n            {\r\n                dgv.Columns[c].Visible = false;\r\n            }\r\n        }\r\n\r\n        public void read_only_columns()\r\n        {\r\n            foreach (string c in setting.read_only_headers)\r\n            {\r\n                dgv.Columns[c].ReadOnly = true;\r\n            }\r\n        }\r\n\r\n        public void create_columns()\r\n        {\r\n            foreach (string s in setting.column_headers)\r\n            {\r\n                DataGridViewTextBoxColumn dgv_tbc = new DataGridViewTextBoxColumn();\r\n                dgv_tbc.Name = s;\r\n                dgv_tbc.HeaderText = s;\r\n                dgv_tbc.Width = 100;\r\n\r\n                foreach (var w in setting.width_list)\r\n                {\r\n                    int result;\r\n                    int.TryParse(w[2].ToString(), out result);\r\n                    if (w[0] == setting.main_form_instance.Text &amp;&amp; w[1] == s) dgv_tbc.Width = result;\r\n                }\r\n\r\n                System.Diagnostics.Debug.Print(setting.main_form_instance.Text);\r\n\r\n                if (setting.variable_type_dic.ContainsKey(s))\r\n                {\r\n                    parse_setting p;\r\n                    switch (setting.variable_type_dic[s])\r\n                    {\r\n                        case \"d\":\r\n                            p = new parse_setting(\"d\", \"\");\r\n                            dgv_tbc.ValueType = p.parse_type;\r\n                            dgv_tbc.DefaultCellStyle.Format = p.parse_format_string;\r\n                            break;\r\n                        case \"m\":\r\n                            p = new parse_setting(\"m\", \"\");\r\n                            dgv_tbc.ValueType = p.parse_type;\r\n                            dgv_tbc.DefaultCellStyle.Format = p.parse_format_string;\r\n                            break;\r\n                        case \"z\":\r\n                            p = new parse_setting(\"z\", \"\");\r\n                            dgv_tbc.ValueType = p.parse_type;\r\n                            dgv_tbc.DefaultCellStyle.Format = p.parse_format_string;\r\n                            break;\r\n                    }\r\n                }\r\n                dgv.Columns.Add(dgv_tbc);\r\n            }\r\n        }\r\n\r\n        public void change_flg_event()\r\n        {\r\n            dgv.CellValueChanged += new DataGridViewCellEventHandler((object sender, DataGridViewCellEventArgs e) =&gt; {\r\n                dgv.Rows[e.RowIndex].Cells[setting.change_flg_header].Value = \"1\";\r\n                dgv.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Blue;\r\n            });\r\n        }\r\n\r\n        public void set_forcus_event()\r\n        {\r\n            if (form_type == \"main\")\r\n            {\r\n                dgv.CellValueChanged += new DataGridViewCellEventHandler((object sender, DataGridViewCellEventArgs e) =&gt; {\r\n\r\n                    int c1 = dgv.Columns[\"\u6570\u91cf\"].Index;\r\n                    int c2 = dgv.Columns[\"\u91cd\u91cf\"].Index;\r\n                    int c3 = dgv.Columns[\"\u30ec\u30fc\u30c8\"].Index;\r\n                    int c4 = dgv.Columns[\"\u5358\u4fa1\"].Index;\r\n                    int c5 = dgv.Columns[\"\u91d1\u984d\"].Index;\r\n\r\n                    if (e.ColumnIndex != c1 &amp;&amp; e.ColumnIndex != c2 &amp;&amp; e.ColumnIndex != c3 &amp;&amp; e.ColumnIndex != c4) return;\r\n                    if (dgv.Rows[e.RowIndex].Cells[c4].Value == null || dgv.Rows[e.RowIndex].Cells[c4].Value.ToString() == \"\") return;\r\n\r\n                    if (dgv.Rows[e.RowIndex].Cells[c2].Value != null &amp;&amp; dgv.Rows[e.RowIndex].Cells[c2].Value.ToString() != \"\" &amp;&amp; dgv.Rows[e.RowIndex].Cells[c2].Value.ToString() != \"0\")\r\n                    {\r\n                        dgv.Rows[e.RowIndex].Cells[c5].Value = (decimal.Parse(dgv.Rows[e.RowIndex].Cells[c4].Value.ToString()) * decimal.Parse(dgv.Rows[e.RowIndex].Cells[c2].Value.ToString())).ToString();\r\n                    }\r\n                    else if (dgv.Rows[e.RowIndex].Cells[c1].Value != null &amp;&amp; dgv.Rows[e.RowIndex].Cells[c1].Value.ToString() != \"\")\r\n                    {\r\n                        dgv.Rows[e.RowIndex].Cells[c5].Value = (decimal.Parse(dgv.Rows[e.RowIndex].Cells[c1].Value.ToString()) * decimal.Parse(dgv.Rows[e.RowIndex].Cells[c4].Value.ToString())).ToString();\r\n                    }\r\n                    else\r\n                    {\r\n                        dgv.Rows[e.RowIndex].Cells[c5].Value = \"\";\r\n                    }\r\n\r\n                    if (dgv.Rows[e.RowIndex].Cells[c3].Value != null &amp;&amp; dgv.Rows[e.RowIndex].Cells[c3].Value.ToString() != \"\" &amp;&amp; dgv.Rows[e.RowIndex].Cells[c3].Value.ToString() != \"0\" &amp;&amp;\r\n                        dgv.Rows[e.RowIndex].Cells[c5].Value != null &amp;&amp; dgv.Rows[e.RowIndex].Cells[c5].Value.ToString() != \"\")\r\n                    {\r\n                        dgv.Rows[e.RowIndex].Cells[c5].Value = decimal.Parse(dgv.Rows[e.RowIndex].Cells[c5].Value.ToString()) * decimal.Parse(dgv.Rows[e.RowIndex].Cells[c3].Value.ToString());\r\n                    }\r\n\r\n                });\r\n            }\r\n\r\n            if (form_type == \"parts_sub\")\r\n            {\r\n                dgv.CellValueChanged += new DataGridViewCellEventHandler((object sender, DataGridViewCellEventArgs e) =&gt; {\r\n\r\n                    int c1 = dgv.Columns[\"\u6570\u91cf\"].Index;\r\n                    int c2 = dgv.Columns[\"\u53f0\u6570\"].Index;\r\n                    int c3 = dgv.Columns[\"\u767a\u6ce8\u6570\u91cf\"].Index;\r\n\r\n                    if (e.ColumnIndex != c1 &amp;&amp; e.ColumnIndex != c2) return;\r\n                    if (dgv.Rows[e.RowIndex].Cells[c1].Value == null || dgv.Rows[e.RowIndex].Cells[c1].Value.ToString() == \"\") return;\r\n                    if (dgv.Rows[e.RowIndex].Cells[c2].Value == null || dgv.Rows[e.RowIndex].Cells[c2].Value.ToString() == \"\") return;\r\n\r\n                    dgv.Rows[e.RowIndex].Cells[c3].Value =\r\n                    (decimal.Parse(dgv.Rows[e.RowIndex].Cells[c1].Value.ToString()) * decimal.Parse(dgv.Rows[e.RowIndex].Cells[c2].Value.ToString())).ToString();\r\n                    \r\n                });\r\n            }\r\n        }\r\n\r\n        public void set_click_supplier_master_event()\r\n        {\r\n            if (form_type == \"main\" || form_type == \"parts\" || form_type == \"parts_sub\")\r\n            {\r\n                foreach (string target_column in setting.supplier_master_header)\r\n                {\r\n                    dgv.MouseClick += new MouseEventHandler((object sender, MouseEventArgs e) =&gt; {\r\n\r\n                        int c = dgv.HitTest(e.X, e.Y).ColumnIndex;\r\n                        int r = dgv.HitTest(e.X, e.Y).RowIndex;\r\n\r\n                        if (e.Button == MouseButtons.Right || c &lt; 0 || r &lt; 0) return;\r\n                        if (target_column != dgv.Columns[c].HeaderText) return;\r\n\r\n                        master_dialog f = new master_dialog(target_column, new ComboBox(), setting);\r\n                        f.StartPosition = FormStartPosition.Manual;\r\n                        f.Location = new Point(Cursor.Position.X, Cursor.Position.Y);\r\n                        f.ShowDialog();\r\n\r\n                        if (f.clicked_enter)\r\n                        {\r\n                            foreach (DataGridViewCell cell in dgv.SelectedCells)\r\n                            {\r\n                                if (cell.OwningColumn.HeaderText == target_column)\r\n                                {\r\n                                    cell.Value = f.inputted_value;\r\n                                    dgv.Rows[cell.RowIndex].Cells[\"\u4ed5\u5165\u5148\u30b3\u30fc\u30c9\"].Value = f.inputted_cd;\r\n                                }\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n\r\n\r\n        }\r\n\r\n        public void basic_properties()\r\n        {\r\n            dgv.Anchor = AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom | AnchorStyles.Left;\r\n            dgv.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;\r\n            dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;\r\n            dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;\r\n            dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;\r\n            dgv.Font = new Font(\"MS UI Gothic\", 12);\r\n            dgv.RowTemplate.Height = 20;\r\n            dgv.AllowUserToAddRows = false;\r\n            \r\n            typeof(DataGridView).\r\n                GetProperty(\"DoubleBuffered\", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).\r\n                SetValue(dgv, true, null);\r\n        }\r\n    }\r\n\r\n    public class parse_setting\r\n    {\r\n        public Type parse_type = typeof(String);\r\n        public string parse_format_string = \"\";\r\n        public string parse_result = null;\r\n\r\n        public parse_setting(string type, string value)\r\n        {\r\n            try\r\n            {\r\n                switch (type)\r\n                {\r\n                    case \"d\":\r\n                        parse_type = typeof(DateTime);\r\n                        parse_format_string = \"yyyy-MM-dd\";\r\n                        if (value != \"\") parse_result = DateTime.Parse(value).ToString(parse_format_string);\r\n                        break;\r\n                    case \"m\":\r\n                        parse_type = typeof(Decimal);\r\n                        parse_format_string = \"#,0\";\r\n                        if (value != \"\") parse_result = decimal.Parse(value).ToString(parse_format_string);\r\n                        break;\r\n                    case \"n\":\r\n                        parse_type = typeof(Decimal);\r\n                        parse_format_string = \"#,0.0\";\r\n                        if (value != \"\") parse_result = decimal.Parse(value).ToString(parse_format_string);\r\n                        break;\r\n                }\r\n            }\r\n            catch\r\n            {\r\n                parse_type = typeof(String);\r\n                parse_format_string = \"\";\r\n                parse_result = null;\r\n            }\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Collections.Generic;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\n\r\nusing System.Windows.Forms;\r\n\r\nnamespace WindowsFormsApp1\r\n{\r\n    public partial class dgv_setting\r\n    {\r\n        public void set_click_context_event()\r\n        {\r\n            dgv.MouseClick += new MouseEventHandler((object sender, MouseEventArgs e) =&gt; {\r\n\r\n                int c = dgv.HitTest(e.X, e.Y).ColumnIndex;\r\n                int r = dgv.HitTest(e.X, e.Y).RowIndex;\r\n                if (e.Button == MouseButtons.Left || c &lt; 0 || r &lt; 0) return;\r\n\r\n                ContextMenu menu = new ContextMenu();\r\n\r\n                if (form_type == \"main\" || form_type == \"parts\" || form_type == \"parts_sub\" || form_type == \"supply\" || form_type == \"size\")\r\n                {\r\n                    menu.MenuItems.Add(\"\u540c\u4e00\u5185\u5bb9\u3092\u5165\u529b(\u9078\u629e\u30bb\u30eb)\", new EventHandler((object item_sender, EventArgs items_e) =&gt; {\r\n\r\n                        master_dialog f = new master_dialog(\"\u5165\u529b\u5185\u5bb9\", new TextBox(), setting);\r\n                        f.StartPosition = FormStartPosition.Manual;\r\n                        f.Location = new Point(Cursor.Position.X, Cursor.Position.Y);\r\n                        f.ShowDialog();\r\n\r\n                        if (f.clicked_enter)\r\n                        {\r\n                            foreach (DataGridViewCell cell in dgv.SelectedCells)\r\n                            {\r\n                                try\r\n                                {\r\n                                    if (setting.variable_type_dic.ContainsKey(cell.OwningColumn.HeaderText))\r\n                                    {\r\n                                        switch (setting.variable_type_dic[cell.OwningColumn.HeaderText])\r\n                                        {\r\n                                            case \"d\":\r\n                                                cell.Value = new parse_setting(\"d\", f.inputted_value).parse_result;\r\n                                                break;\r\n                                            case \"m\":\r\n                                                cell.Value = new parse_setting(\"m\", f.inputted_value).parse_result;\r\n                                                break;\r\n                                            case \"z\":\r\n                                                cell.Value = new parse_setting(\"z\", f.inputted_value).parse_result;\r\n                                                break;\r\n                                        }\r\n                                    }\r\n                                    else\r\n                                    {\r\n                                        if (Array.IndexOf(setting.read_only_headers, cell.OwningColumn.HeaderText) == -1)\r\n                                        {\r\n                                            cell.Value = f.inputted_value;\r\n                                        }\r\n                                    }\r\n                                }\r\n                                catch\r\n                                {\r\n                                    cell.Value = null;\r\n                                }\r\n                            }\r\n                        }\r\n                    }));\r\n                }\r\n\r\n                if (form_type == \"parts\")\r\n                {\r\n                    menu.MenuItems.Add(\"\u6750\u6599\u624b\u914d\u30c6\u30fc\u30d6\u30eb\u3078\u8ee2\u9001(\u9078\u629e\u884c)\", new EventHandler((object item_sender, EventArgs items_e) =&gt; {\r\n\r\n                        DataGridView parent_dgv = ((DataGridView)setting.main_form_instance.parent_form.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"]);\r\n                        if (parent_dgv == null) return;\r\n\r\n                        var selected_rows_index = dgv.SelectedCells.Cast&lt;DataGridViewCell&gt;().Select(x =&gt; x.RowIndex).Distinct();\r\n                        foreach (int selected_row_index in selected_rows_index)\r\n                        {\r\n                            var new_row = new DataGridViewRow();\r\n                            new_row.CreateCells(parent_dgv);\r\n                            new_row.Height = parent_dgv.RowTemplate.Height;\r\n\r\n                            for (int i = 0; i &lt; setting.parts_sub_correspond.GetLength(0); i++)\r\n                            {\r\n                                string parts_cell_value = \"\";\r\n\r\n                                if (dgv.Rows[selected_row_index].Cells[setting.parts_sub_correspond[i, 1]].Value != null)\r\n                                    parts_cell_value = dgv.Rows[selected_row_index].Cells[setting.parts_sub_correspond[i, 1]].Value.ToString();\r\n\r\n                                int parent_column_index = parent_dgv.Columns[setting.parts_sub_correspond[i, 0]].Index;\r\n\r\n                                if (new_row.Cells[parent_column_index].Value != null &amp;&amp;\r\n                                    new_row.Cells[parent_column_index].Value.ToString() != \"\")\r\n                                {\r\n                                    new_row.Cells[parent_column_index].Value =\r\n                                    new_row.Cells[parent_column_index].Value.ToString() + \" \" + parts_cell_value;\r\n                                }\r\n                                else\r\n                                {\r\n                                    new_row.Cells[parent_column_index].Value = parts_cell_value;\r\n                                }\r\n\r\n                            }\r\n                            setting.main_form_instance.parent_form.Activate();\r\n                            parent_dgv.Rows.Add(new_row);\r\n                            new_row.Cells[parent_dgv.Columns[setting.change_flg_header].Index].Value = \"1\";\r\n                        }\r\n                    }));\r\n\r\n                }\r\n\r\n                if (form_type == \"copy\" || form_type == \"parts_sub\")\r\n                {\r\n                    menu.MenuItems.Add(\"\u4ed5\u5165\u53f0\u5e33\u3078\u8ee2\u9001(\u9078\u629e\u884c)\", new EventHandler((object item_sender, EventArgs items_e) =&gt; {\r\n\r\n                        var selected_rows_index = dgv.SelectedCells.Cast&lt;DataGridViewCell&gt;().Select(x =&gt; x.RowIndex).Distinct();\r\n                        DataGridView parent_dgv = ((DataGridView)setting.main_form_instance.parent_form.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"]);\r\n\r\n                        for (int i = 0; i &lt; parent_dgv.Rows.Count; i++)\r\n                        {\r\n                            if (parent_dgv.Rows[i].Cells[setting.id_header].Value != null &amp;&amp;\r\n                                parent_dgv.Rows[i].Cells[setting.id_header].Value.ToString() != \"\") parent_dgv.Rows.Clear();\r\n                        }\r\n\r\n                        foreach (int selected_row_index in selected_rows_index)\r\n                        {\r\n                            var new_row = new DataGridViewRow();\r\n                            new_row.CreateCells(parent_dgv);\r\n                            new_row.Height = parent_dgv.RowTemplate.Height;\r\n\r\n                            if (setting.main_form_instance.form_type == \"parts_sub\")\r\n                            {\r\n                                for (int i = 0; i &lt; setting.main_parts_correspond.GetLength(0); i++)\r\n                                {\r\n                                    string parts_cell_value = \"\";\r\n                                    if (dgv.Rows[selected_row_index].Cells[setting.main_parts_correspond[i, 1]].Value != null) parts_cell_value = dgv.Rows[selected_row_index].Cells[setting.main_parts_correspond[i, 1]].Value.ToString();\r\n\r\n                                    int parent_column_index = parent_dgv.Columns[setting.main_parts_correspond[i, 0]].Index;\r\n\r\n                                    if (new_row.Cells[parent_column_index].Value != null &amp;&amp;\r\n                                       new_row.Cells[parent_column_index].Value.ToString() != \"\")\r\n                                    {\r\n                                        new_row.Cells[parent_column_index].Value =\r\n                                        new_row.Cells[parent_column_index].Value.ToString() + \" \" + parts_cell_value;\r\n                                    }\r\n                                    else\r\n                                    {\r\n                                        new_row.Cells[parent_column_index].Value = parts_cell_value;\r\n                                    }\r\n\r\n                                }\r\n                            }\r\n                            else if(setting.main_form_instance.form_type == \"copy\")\r\n                            {\r\n                                for (int i = 0; i &lt; setting.column_headers.Length; i++)\r\n                                {\r\n                                    string column_name = setting.column_headers[i];\r\n                                    if(column_name != setting.id_header &amp;&amp; column_name != setting.change_flg_header)\r\n                                    {\r\n                                        string copy_cell_value = \"\";\r\n                                        if (dgv.Rows[selected_row_index].Cells[column_name].Value != null) copy_cell_value = dgv.Rows[selected_row_index].Cells[column_name].Value.ToString();\r\n\r\n                                        int parent_column_index = parent_dgv.Columns[column_name].Index;\r\n                                        new_row.Cells[parent_column_index].Value = copy_cell_value;\r\n                                    }\r\n                                }\r\n                            }\r\n                            setting.main_form_instance.parent_form.Activate();\r\n                            parent_dgv.Rows.Add(new_row);\r\n                            new_row.Cells[parent_dgv.Columns[setting.change_flg_header].Index].Value = \"1\";\r\n                        }\r\n                    }));\r\n                }\r\n\r\n                if (form_type == \"main\")\r\n                {\r\n                    menu.MenuItems.Add(\"\u6ce8\u6587\u66f8\u4f5c\u6210(\u9078\u629e\u884c)\", new EventHandler((object item_sender, EventArgs items_e) =&gt; {\r\n\r\n                        create_excel excel = new create_excel();\r\n                        excel.create_order_work(dgv, setting,1);\r\n\r\n                    }));\r\n                }\r\n\r\n                if (form_type == \"parts_sub\")\r\n                {\r\n                    menu.MenuItems.Add(\"\u4f5c\u696d\u6307\u793a\u66f8\u4f5c\u6210(\u9078\u629e\u884c)\", new EventHandler((object item_sender, EventArgs items_e) =&gt; {\r\n\r\n                        create_excel excel = new create_excel();\r\n                        excel.create_order_work(dgv, setting,2);\r\n\r\n                    }));\r\n                }\r\n\r\n                if (form_type == \"main\" || form_type == \"parts\" || form_type == \"parts_sub\" || form_type == \"supply\" || form_type == \"size\")\r\n                {\r\n                    menu.MenuItems.Add(\"-\");\r\n\r\n                    menu.MenuItems.Add(\"\u524a\u9664(\u9078\u629e\u884c)\", new EventHandler((object items_sender, EventArgs items_e) =&gt; {\r\n\r\n                        DialogResult result = MessageBox.Show(\"\u672c\u5f53\u306b\u524a\u9664\u3057\u307e\u3059\u304b\uff1f\", \"\", MessageBoxButtons.YesNo);\r\n                        if (result == DialogResult.No) return;\r\n\r\n                        db_setting db = new db_setting(setting);\r\n                        var selected_rows_index = dgv.SelectedCells.Cast&lt;DataGridViewCell&gt;().Select(x =&gt; x.RowIndex).Distinct();\r\n\r\n                        foreach (int selected_row_index in selected_rows_index)\r\n                        {\r\n                            if (dgv.Rows[selected_row_index].Cells[setting.id_header].Value != null)\r\n                            {\r\n                                string id = dgv.Rows[selected_row_index].Cells[setting.id_header].Value.ToString();\r\n                                db.delete_dgv_row(id);\r\n                            }\r\n                        }\r\n\r\n                        var selected_rows = dgv.SelectedCells.Cast&lt;DataGridViewCell&gt;().Select(x =&gt; x.OwningRow).Distinct();\r\n\r\n                        foreach (DataGridViewRow selected_row in selected_rows)\r\n                        {\r\n                            dgv.Rows.Remove(selected_row);\r\n                        }\r\n                    }));\r\n                }\r\n                menu.Show(dgv, new Point(e.X, e.Y));\r\n            });\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing System.Windows.Forms;\r\nusing System.Drawing;\r\n\r\nnamespace WindowsFormsApp1\r\n{\r\n    public partial class main_form\r\n    {\r\n        private void set_button_event()\r\n        {\r\n            if (form_type == \"main\" || form_type == \"copy\" || form_type == \"parts\" || form_type == \"supply\")\r\n            {\r\n                ((Button)this.Controls[\"\u691c\u7d22\"]).Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n                    dgv_load();\r\n                });\r\n            }\r\n\r\n            if (form_type == \"main\" || form_type == \"copy\" || form_type == \"parts\" || form_type == \"supply\")\r\n            {\r\n                ((Button)this.Controls[\"\u30af\u30ea\u30a2\"]).Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n\r\n                    foreach (Control c in this.Controls)\r\n                    {\r\n                        if (c.GetType() == typeof(TextBox) || c.GetType() == typeof(ComboBox))\r\n                        {\r\n                            c.Text = \"\";\r\n                            c.BackColor = SystemColors.Window;\r\n                        }\r\n                        if (c.Name == \"\u8868\u793a\u7a2e\u985e\") c.Text = \"\u5168\u90e8\";\r\n                        if (c.Name == \"\u4e00\u81f4\u7a2e\u985e\") c.Text = \"\u66d6\u6627\";\r\n                    }\r\n\r\n                    dgv_load();\r\n                });\r\n            }\r\n\r\n            if (form_type == \"main\")\r\n            {\r\n                ((Button)this.Controls[\"\u6750\u6599\u624b\u914d\"]).Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n\r\n                    main_form f_sub = new main_form(\"parts_sub\", this);\r\n                    main_form f = new main_form(\"parts\", f_sub);\r\n\r\n                    f_sub.Shown += new EventHandler((object shown_sender, EventArgs shown_e) =&gt; {\r\n                        f_sub.Left = f.Left + 100;\r\n                        f_sub.Top = f.Top + 100;\r\n                    });\r\n                    f_sub.Show();\r\n                    f.Show();\r\n                });\r\n            }\r\n\r\n            if (form_type == \"main\")\r\n            {\r\n                ((Button)this.Controls[\"\u8907\u88fd\"]).Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n                    main_form f = new main_form(\"copy\", this);\r\n                    f.Show();\r\n                });\r\n            }\r\n\r\n            if (form_type == \"main\" || form_type == \"parts\" || form_type == \"parts_sub\" || form_type == \"supply\" || form_type == \"size\")\r\n            {\r\n                ((Button)this.Controls[\"\u65b0\u898f\"]).Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n                    dgv_new_row();\r\n                });\r\n            }\r\n\r\n            if (form_type == \"main\")\r\n            {\r\n                ((Button)this.Controls[\"\u96c6\u8a08\u8868\u793a\"]).Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n                    main_form f = new main_form(\"sumup\", this);\r\n                    f.ShowDialog();\r\n                });\r\n            }\r\n\r\n            if (form_type == \"main\" || form_type == \"parts\" || form_type == \"supply\" || form_type == \"sumup\")\r\n            {\r\n                ((Button)this.Controls[\"\u30a8\u30af\u30bb\u30eb\u3067\u8868\u793a\"]).Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n                    var excel = new create_excel();\r\n                    excel.dgv_copy(((DataGridView)this.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"]),setting);\r\n                });\r\n            }\r\n\r\n            if (form_type == \"main\" || form_type == \"parts\" || form_type == \"supply\" || form_type == \"size\")\r\n            {\r\n                ((Button)this.Controls[\"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u53cd\u6620\"]).Click += new EventHandler((object sender, EventArgs e) =&gt; {\r\n\r\n                    DataGridView dgv = (DataGridView)this.Controls[\"\u30b0\u30ea\u30c3\u30c9\u30d3\u30e5\u30fc\"];\r\n\r\n                    int r = dgv.CurrentCell.RowIndex;\r\n                    int c = dgv.CurrentCell.ColumnIndex;\r\n\r\n                    Boolean isNewRowAdded = false;\r\n\r\n                    for (int i = 0; i &lt; dgv.Rows.Count; i++)\r\n                    {\r\n                        if (dgv.Rows[i].Cells[setting.id_header].Value == null) isNewRowAdded = true;\r\n                    }\r\n\r\n                    int pre_count = dgv.Rows.Count;\r\n\r\n                    db_setting db = new db_setting(setting);\r\n                    db.insert_update_dgv(dgv);\r\n\r\n                    int post_count = dgv.Rows.Count;\r\n\r\n                    if (isNewRowAdded)\r\n                    {\r\n                        dgv.FirstDisplayedScrollingRowIndex = dgv.Rows.Count - 1;\r\n                    }\r\n                    else\r\n                    {\r\n                        if (pre_count == post_count) dgv.CurrentCell = dgv.Rows[r].Cells[c];\r\n                    }\r\n                });\r\n            }\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Drawing;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing System.Windows.Forms;\r\n\r\nnamespace WindowsFormsApp1\r\n{\r\n    public partial class master_dialog : Form\r\n    {\r\n        public List&lt;string[]&gt; cd_name_list;\r\n        public string inputted_value = \"\";\r\n        public string inputted_cd = \"\";\r\n        public Boolean clicked_enter = false;\r\n\r\n        public master_dialog(string target_column_name, Control control_type, setting setting)\r\n        {\r\n            InitializeComponent();\r\n            Text = target_column_name;\r\n\r\n            Control control = control_type;\r\n            control.Location = new Point(12, 12);\r\n            control.Font = new Font(\"MS UI Gothic\", 12);\r\n            control.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right;\r\n            control.Width = this.Width - 40;\r\n            \r\n            this.Controls.Add(control);\r\n\r\n            if (control_type.GetType() == typeof(ComboBox))\r\n            {\r\n                db_setting db = new db_setting(setting);\r\n                cd_name_list = db.get_master_list2(target_column_name, setting.supplier_table_name);\r\n                var name_list = cd_name_list.Select(x =&gt; x[1]).ToArray();\r\n\r\n                ((ComboBox)control).Items.AddRange(name_list.ToArray());\r\n                ((ComboBox)control).AutoCompleteMode = AutoCompleteMode.Append;\r\n                ((ComboBox)control).AutoCompleteSource = AutoCompleteSource.ListItems;\r\n            }\r\n\r\n            control.KeyDown += new KeyEventHandler((object sender, KeyEventArgs e)=&gt; {\r\n\r\n                if (e.KeyCode == Keys.Enter)\r\n                {\r\n                    inputted_value = control.Text;\r\n\r\n                    if (control_type.GetType() == typeof(ComboBox) &amp;&amp; inputted_value != \"\")\r\n                    {\r\n                        foreach (var c in cd_name_list)\r\n                        {\r\n                            if (c[1] == inputted_value) inputted_cd = c[0];\r\n                        }\r\n                    }\r\n\r\n                    clicked_enter = true;\r\n                    this.Close();\r\n                }\r\n\r\n                if (e.KeyCode == Keys.Escape)\r\n                {\r\n                    this.Close();\r\n                }\r\n            });\r\n        }\r\n    }\r\n}\r\n<\/pre>\n<pre class=\"lang:c# decode:true \">using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing System.Windows.Forms;\r\n\r\nusing Microsoft.Office.Interop.Excel;\r\nusing System.Runtime.InteropServices;\r\n\r\nnamespace WindowsFormsApp1\r\n{\r\n    class create_excel\r\n    {\r\n        public void create_order_work(DataGridView dgv, setting setting, int t)\r\n        {\r\n            if (Type.GetTypeFromProgID(\"Excel.Application\") == null) return;\r\n\r\n            string book_name = \"\";\r\n\r\n            switch (t)\r\n            {\r\n                case 1:\r\n                    book_name = @\"\\create_order.xlsm\";\r\n                    break;\r\n                case 2:\r\n                    book_name = @\"\\create_work.xlsm\";\r\n                    break;\r\n            }\r\n\r\n            SaveFileDialog sfd = new SaveFileDialog();\r\n            sfd.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);\r\n            sfd.Filter = \"xlsm | *.xlsm\";\r\n\r\n            if (sfd.ShowDialog() != DialogResult.OK) return;\r\n\r\n            var ex = new Microsoft.Office.Interop.Excel.Application();\r\n            ex.Visible = false;\r\n            ex.DisplayAlerts = false;\r\n            var bs = ex.Workbooks;\r\n            var wb = bs.Open(System.Windows.Forms.Application.StartupPath + book_name);\r\n            var ss = wb.Sheets;\r\n            var ws = ss[\"data\"];\r\n\r\n            try\r\n            {\r\n                wb.SaveCopyAs(sfd.FileName);\r\n            }\r\n            catch(Exception e)\r\n            {\r\n                MessageBox.Show(e.Message);\r\n                return;\r\n            }\r\n            finally\r\n            {\r\n                wb.Close();\r\n\r\n                Marshal.ReleaseComObject(ws);\r\n                ws = null;\r\n                Marshal.ReleaseComObject(ss);\r\n                ss = null;\r\n                Marshal.ReleaseComObject(wb);\r\n                wb = null;\r\n                Marshal.ReleaseComObject(bs);\r\n                bs = null;\r\n                Marshal.ReleaseComObject(ex);\r\n                ex = null;\r\n            }\r\n\r\n            ex = new Microsoft.Office.Interop.Excel.Application();\r\n            bs = ex.Workbooks;\r\n            wb = bs.Open(sfd.FileName);\r\n            ss = wb.Sheets;\r\n            ws = ss[\"data\"];\r\n\r\n            var selected_rows_index = dgv.SelectedCells.Cast&lt;DataGridViewCell&gt;().Select(x =&gt; x.RowIndex).Distinct();\r\n\r\n            if(t == 1)\r\n            {\r\n                int start_row = 1;\r\n                foreach (int selected_row_index in selected_rows_index)\r\n                {\r\n                    var rc = ws.Cells[start_row, 1];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u4ed5\u5165\u5148\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u4ed5\u5165\u5148\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 2];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u54c1\u540d\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u54c1\u540d\"].Value.ToString();\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u6750\u8cea\"].Value != null) rc.value = rc.value + \" \" + dgv.Rows[selected_row_index].Cells[\"\u6750\u8cea\"].Value.ToString();\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u578b\u756a\u30fb\u30b5\u30a4\u30ba\"].Value != null) rc.value = rc.value + \" \" + dgv.Rows[selected_row_index].Cells[\"\u578b\u756a\u30fb\u30b5\u30a4\u30ba\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 3];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u767a\u6ce8\u6570\u91cf\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u767a\u6ce8\u6570\u91cf\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 4];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u7d0d\u671f\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u7d0d\u671f\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 5];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u578b\u5f0f\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u578b\u5f0f\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 6];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u7d0d\u54c1\u5148\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u7d0d\u54c1\u5148\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 7];\r\n                    rc.value = start_row.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    start_row++;\r\n                }\r\n            }\r\n\r\n            if(t == 2)\r\n            {\r\n                int start_row = 1;\r\n                foreach (int selected_row_index in selected_rows_index)\r\n                {\r\n                    var rc = ws.Cells[start_row, 1];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u578b\u5f0f\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u578b\u5f0f\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 2];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u54c1\u540d\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u54c1\u540d\"].Value.ToString();\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u6750\u8cea\"].Value != null) rc.value = rc.value + \" \" + dgv.Rows[selected_row_index].Cells[\"\u6750\u8cea\"].Value.ToString();\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u5bf8\u6cd5\"].Value != null) rc.value = rc.value + \" \" + dgv.Rows[selected_row_index].Cells[\"\u5bf8\u6cd5\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 3];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u53f0\u6570\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u53f0\u6570\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 4];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u767a\u6ce8\u6570\u91cf\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u767a\u6ce8\u6570\u91cf\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 5];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u73ed\u540d\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u73ed\u540d\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 6];\r\n                    if (dgv.Rows[selected_row_index].Cells[\"\u7d0d\u671f\"].Value != null) rc.value = dgv.Rows[selected_row_index].Cells[\"\u7d0d\u671f\"].Value.ToString();\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    rc = ws.Cells[start_row, 7];\r\n                    rc.value = \"\u756a\u53f7\";\r\n                    System.Runtime.InteropServices.Marshal.ReleaseComObject(rc);\r\n                    rc = null;\r\n\r\n                    start_row++;\r\n                }\r\n            }\r\n\r\n            try\r\n            {\r\n                if (t == 1) ex.Run(\"create_order\");\r\n                if (t == 2) ex.Run(\"auto_open\");\r\n\r\n                ex.Visible = true;\r\n                ex.DisplayAlerts = true;\r\n            }\r\n            catch\r\n            {\r\n                MessageBox.Show(\"\u30a8\u30af\u30bb\u30eb\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\");\r\n            }\r\n            finally\r\n            {\r\n                Marshal.ReleaseComObject(ws);\r\n                ws = null;\r\n                Marshal.ReleaseComObject(ss);\r\n                ss = null;\r\n                Marshal.ReleaseComObject(wb);\r\n                wb = null;\r\n                Marshal.ReleaseComObject(bs);\r\n                bs = null;\r\n                Marshal.ReleaseComObject(ex);\r\n                ex = null;\r\n            }\r\n        }\r\n\r\n        public void dgv_copy(DataGridView dgv,setting setting)\r\n        {\r\n            if (Type.GetTypeFromProgID(\"Excel.Application\") == null) return;\r\n\r\n            SaveFileDialog sfd = new SaveFileDialog();\r\n            sfd.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);\r\n            sfd.Filter = \"xlsm | *.xlsm\";\r\n\r\n            if (sfd.ShowDialog() != DialogResult.OK) return;\r\n\r\n            var ex = new Microsoft.Office.Interop.Excel.Application();\r\n            ex.Visible = false;\r\n            ex.DisplayAlerts = false;\r\n            var bs = ex.Workbooks;\r\n            var wb = bs.Open(System.Windows.Forms.Application.StartupPath + @\"\\dgv_copy.xlsm\");\r\n            var ss = wb.Sheets;\r\n            var ws = ss[\"1\"];\r\n\r\n            try\r\n            {\r\n                wb.SaveCopyAs(sfd.FileName);\r\n            }\r\n            catch (Exception e)\r\n            {\r\n                MessageBox.Show(e.Message);\r\n                return;\r\n            }\r\n            finally\r\n            {\r\n                wb.Close();\r\n\r\n                Marshal.ReleaseComObject(ws);\r\n                ws = null;\r\n                Marshal.ReleaseComObject(ss);\r\n                ss = null;\r\n                Marshal.ReleaseComObject(wb);\r\n                wb = null;\r\n                Marshal.ReleaseComObject(bs);\r\n                bs = null;\r\n                Marshal.ReleaseComObject(ex);\r\n                ex = null;\r\n            }\r\n\r\n            ex = new Microsoft.Office.Interop.Excel.Application();\r\n            bs = ex.Workbooks;\r\n            wb = bs.Open(sfd.FileName);\r\n            ss = wb.Sheets;\r\n            ws = ss[\"1\"];\r\n\r\n            try\r\n            {\r\n                if (setting.main_form_instance.form_type == \"sumup\")\r\n                {\r\n                    ex.Run(\"dgv_copy\", setting.main_form_instance.build_query_sumup(), setting.connection_string);\r\n                }\r\n                else\r\n                {\r\n                    ex.Run(\"dgv_copy\", setting.main_form_instance.build_query(), setting.connection_string);\r\n                }\r\n                ex.Visible = true;\r\n                ex.DisplayAlerts = true;\r\n            }\r\n            catch\r\n            {\r\n                MessageBox.Show(\"\u30a8\u30af\u30bb\u30eb\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\");\r\n            }\r\n            finally\r\n            {\r\n                Marshal.ReleaseComObject(ws);\r\n                ws = null;\r\n                Marshal.ReleaseComObject(ss);\r\n                ss = null;\r\n                Marshal.ReleaseComObject(wb);\r\n                wb = null;\r\n                Marshal.ReleaseComObject(bs);\r\n                bs = null;\r\n                Marshal.ReleaseComObject(ex);\r\n                ex = null;\r\n            }\r\n\r\n        }\r\n    }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u696d\u52d9\u306b\u4f7f\u3048\u308b\u30bd\u30d5\u30c8\u3068\u3044\u3046\u3053\u3068\u3067\u4f5c\u6210\u3002 using System; using System.Collections.Generic; using System.ComponentModel; using System.D &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/appbay.org\/?p=2265\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;C# \u4ed5\u5165\u7ba1\u7406(\u4ed5\u5165\u5e33)\u696d\u52d9\u7528&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[9],"class_list":["post-2265","post","type-post","status-publish","format-standard","hentry","category-1","tag-c-net"],"_links":{"self":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/2265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2265"}],"version-history":[{"count":3,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/2265\/revisions"}],"predecessor-version":[{"id":2268,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/2265\/revisions\/2268"}],"wp:attachment":[{"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}