weichen825 2021-12-21 15:55 采纳率: 50%
浏览 31
已结题

C#click事件无法将数组中数据传入,导致DateTimePicker所选数据无法传送

           string doc_date = date[m].Value.ToString();//date数据(求解)--此时的doc_date还是原定数据,并不是我所选中的数据;如果将此行放入click内,而date[m]则会显示NULL,无法运行!!!!!!!!!
            string doc_name = doctor_name[m];
            string doc_price = price[m].Text;
            string doc_time1 = doctor_time1[m];
            string doc_remind1 = doctor_remind1[m];

            time1_btn[m].Click += (time1_btn_s, time1_btn_e) =>
            {
                //将数据导入record
                string strcon3 = "Data Source=LAPTOP;Initial Catalog=Big1;Integrated Security=True";
                SqlConnection conn3 = new SqlConnection(strcon3);
                conn3.Open();
                
                string time = "insert into record(账号,医院科室,医师名称,挂号类别,挂号价格,挂号日期,挂号时间)values('" + userId + "','"+ doctor_dep + "','" + doc_name + "','专家号','" + doc_price + "','" + doc_date + "','" + doc_time1 + "')";
                SqlCommand com_time = new SqlCommand(time, conn3);
                com_time.ExecuteNonQuery();
                conn3.Close();
                //使余量减一
                int remind = Convert.ToInt32(doc_remind1);
                if(remind > 0)
                {
                    string remind_str = Convert.ToString(remind - 1);
                    string strcon4 = "Data Source=LAPTOP;Initial Catalog=Big1;Integrated Security=True";
                    SqlConnection conn4 = new SqlConnection(strcon4);
                    conn4.Open();
                    string remind_del = "update Doctor_information set 时间余量1=" + remind_str + " where 医院科室='" + doctor_dep + "' and 医师名称='" + doc_name + "'";
                    SqlCommand com_remind = new SqlCommand(remind_del, conn4);
                    com_remind.ExecuteNonQuery();
                    conn4.Close();

                    MessageBox.Show("挂号成功!");
                    this.Visible = false;
                    Login log = new Login();
                    log.ShowDialog();
                }
                else
                {
                    MessageBox.Show("此时间已无余量,请另选时间或医师!");
                }
                
            };
  • 写回答

3条回答 默认 最新

  • 码老头 2021-12-21 17:29
    关注

    以下只是根据你的问题简单设计了一个示例程序,具体的逻辑处理自行完成。

    先看运行效果:

    img

    完整示例代码我放到了这里:

    核心代码如下:

    Form2.cs

    private List<Doctor> _doctors;
            private void Form2_Load(object sender, EventArgs e)
            {
                _doctors = new List<Doctor>
                {
                    new Doctor{Id = 1,Name = "Doctor(1)"},
                    new Doctor{Id = 2,Name = "Doctor(2)"},
                    new Doctor{Id = 3,Name = "Doctor(3)"}
                };
                foreach (var doctor in _doctors)
                {
                    var p = new Panel();
                    p.Location = new Point(0, doctor.Id * 50 + 10);
                    p.Size = new Size(panel1.Width, 50);
                    p.BorderStyle = BorderStyle.FixedSingle;
                    p.Anchor = AnchorStyles.Left | AnchorStyles.Right;
    
                    var lb = new Label
                    {
                        Text = doctor.Name,
                        Location = new Point(0, 10),
                        Size = new Size(100, 30),
                        Font = new Font(FontFamily.GenericSansSerif, 14, FontStyle.Bold)
                    };
    
                    var dp = new DateTimePicker
                    {
                        Location = new Point(110, 10)
                    };
                    var btn = new Button
                    {
                        Text = @"预约",
                        Dock = DockStyle.Right,
                        Size = new Size(80, 20)
                    };
                    btn.Click += (s, ev) =>
                    {
                        MessageBox.Show($"你当前选择的医生是:{doctor.Name},预约时间是:{dp.Value.ToString("yyyy-MM-dd")}");
                    };
                    p.Controls.Add(btn);
                    p.Controls.Add(lb);
                    p.Controls.Add(dp);
                    panel1.Controls.Add(p);
                }
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 创建了问题 12月21日

悬赏问题

  • ¥15 Converting circular structure to JSON
  • ¥30 Hyper-v虚拟机相关问题,求解答。
  • ¥15 TSM320F2808PZA芯片 Bootloader
  • ¥45 谷歌浏览器出现开发者工具无法显示已创建的,但您可以调试已部署的代码。 状态代码 404, net::ERR HTTP RESPONSE CODE FAILURE
  • ¥15 如何解决蓝牙通话音频突发失真问题
  • ¥15 安装opengauss数据库报错
  • ¥15 【急】在线问答CNC雕刻机的电子电路与编程
  • ¥60 在mc68335芯片上移植ucos ii 的成功工程文件
  • ¥15 笔记本外接显示器正常,但是笔记本屏幕黑屏
  • ¥15 Python pandas