Form1.cs 6.44 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

namespace MedicalCheckInputTool
{
    public partial class Form1 : Form
    {
        private healthAreaSet haSet = null;
        private adminNameSet anSet = null;

        public Form1()
        {
            InitializeComponent();

            this.Text = "検診申込データ入力";

            //画面初期化
            string usersString = System.Configuration.ConfigurationManager.AppSettings["InputUser"];
            if (usersString != null)
            {
                string[] users = usersString.Split(',');
                comboBox1.Items.Add("");
                foreach (string user in users)
                {
                    comboBox1.Items.Add(user);
                }


                // 読み取り専用(テキストボックスは編集不可)にする
                comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;

                comboBox1.SelectedIndex = 0; // 先頭の項目を選択
            }

            string lotString = System.Configuration.ConfigurationManager.AppSettings["LotNo"];
            if (lotString != null)
            {
                string[] lots = lotString.Split(',');
                comboBox2.Items.Add("");
                foreach (string lot in lots)
                {
                    comboBox2.Items.Add(lot);
                }


                // 読み取り専用(テキストボックスは編集不可)にする
                comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;

                comboBox2.SelectedIndex = 0; // 先頭の項目を選択
            }

            comboBox3.Items.Add("");
            comboBox3.Items.Add("1回目");
            comboBox3.Items.Add("2回目");
            // 読み取り専用(テキストボックスは編集不可)にする
            comboBox3.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox3.SelectedIndex = 0; // 先頭の項目を選択

            readFile();


        }

        private void button1_Click(object sender, EventArgs e)
        {
            if ("".Equals(comboBox1.SelectedItem.ToString()))
            {
                MessageBox.Show("入力者を選択してください");
                return;
            }
            if ("".Equals(comboBox2.SelectedItem.ToString()))
            {
                MessageBox.Show("ロットを選択してください");
                return;
            }
            if ("".Equals(comboBox3.SelectedItem.ToString()))
            {
                MessageBox.Show("回数を選択してください");
                return;
            }
            if ("".Equals(comboBox4.SelectedItem.ToString()))
            {
                MessageBox.Show("行政区番号を選択してください");
                return;
            }
            Global.inputUser = comboBox1.SelectedItem.ToString();
            Global.lotNo = comboBox2.SelectedItem.ToString();
            Global.times = comboBox3.SelectedItem.ToString();

            string [] tmp = comboBox4.SelectedItem.ToString().Split(':');
            Global.adminCode = tmp[0];
            Global.adminName = tmp[1];
            Global.healthArea = haSet.healthArea[tmp[0]];
            
            Form2 frm = new Form2();
            frm.ShowDialog();
            frm.Dispose();

        }

        [DataContract]
        public class adminNameSet
        {
            [DataMember]
            public Dictionary<string, string> adminName;

        }

        [DataContract]
        public class healthAreaSet
        {
            [DataMember]
            public Dictionary<string, string> healthArea;

        }

        private void readFile()
        {
            string text = File.ReadAllText(@"adminName.json", Encoding.GetEncoding("shift_jis"));

            var settings = new DataContractJsonSerializerSettings();
            settings.UseSimpleDictionaryFormat = true;
            var serializer = new DataContractJsonSerializer(typeof(adminNameSet), settings);
            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(text)))
            {
                anSet = (adminNameSet)serializer.ReadObject(ms);
            }

            comboBox4.Items.Add("");
            comboBox4.DropDownStyle = ComboBoxStyle.DropDownList;
            comboBox4.SelectedIndex = 0; // 先頭の項目を選択

            //保健区読み込み
            string text2 = File.ReadAllText(@"healthArea.json", Encoding.GetEncoding("shift_jis"));
            var serializer2 = new DataContractJsonSerializer(typeof(healthAreaSet), settings);
            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(text2)))
            {
                haSet = (healthAreaSet)serializer2.ReadObject(ms);
            }


        }

        private void button2_Click(object sender, EventArgs e)
        {
            if ("".Equals(comboBox1.SelectedItem.ToString()))
            {
                MessageBox.Show("入力者を選択してください");
                return;
            }
            if ("".Equals(comboBox2.SelectedItem.ToString()))
            {
                MessageBox.Show("ロットを選択してください");
                return;
            }

            EditParam.inputUser = comboBox1.SelectedItem.ToString();
            EditParam.lotNo = comboBox2.SelectedItem.ToString();
            EditParam.adminCode = textBox1.Text;

            Form3 frm = new Form3();
            frm.ShowDialog();
            frm.Dispose();

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            comboBox4.Items.Clear();

            if (textBox1.Text.Length == 5 || textBox1.Text.Length == 5)
            {
                string key = textBox1.Text.PadLeft(6, '0');

                if (anSet.adminName.ContainsKey(key))
                {
                    string value = anSet.adminName[key];
                    comboBox4.Items.Add(key + ":" + value);
                    button1.Focus();
                }
                else
                {
                    comboBox4.Items.Add("");
                }
            }
            else
            {
                comboBox4.Items.Add("");
            }
            comboBox4.SelectedIndex = 0; // 先頭の項目を選択

        }
    }
}