正确的代码如下

点击查看代码
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 BLL;
using DAL;
using Model;

namespace UI
{
    public partial class CateringShowForm : Form
    {
        private RoomBLL _roomBLL = new RoomBLL();
        private CateringLoginForm _loginForm;
        private DeskBLL _deskBLL = new DeskBLL();

        public CateringShowForm()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;
        }

        public CateringShowForm(CateringLoginForm cateringLoginForm) : this()
        {
            _loginForm = cateringLoginForm;
        }

        private void CateringShowForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            _loginForm?.Close();
            Application.Exit();
        }

        public void ShowTime()
        {
            labTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }

        private void CateringShowForm_Load(object sender, EventArgs e)
        {
            ShowTime();  // 在窗体加载时立即显示当前时间
            timer1.Interval = 1000;  // 设置定时器的时间间隔为1000毫秒(1秒)
            timer1.Start();  // 启动定时器
            //展示包房信息
            InitRoomInfoData();
        }

        // 初始化加载包房信息
        public void InitRoomInfoData()
        {
            DataTable dt = _roomBLL.QueryRoom();
            DataRowCollection rows = dt.Rows;
            foreach (DataRow roomInfo in rows)
            {
                string rname = roomInfo[1].ToString();
                TabPage tabPage = new TabPage(rname);
                tabPage.Tag = roomInfo;
                tabControl2.TabPages.Add(tabPage);

                // 设置新添加的 TabPage 为当前选中的 TabPage
                tabControl2.SelectedTab = tabPage;

                // 调用 ShowDeskInfoByRoom 方法显示桌台信息
                ShowDeskInfoByRoom();
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            ShowTime();  // 每次定时器触发时调用 ShowTime 方法
        }

        private void btnMemmber_Click(object sender, EventArgs e)
        {
            MemberShowForm memberShowForm = new MemberShowForm();
            memberShowForm.ShowDialog();
        }

        private void btnCategory_Click(object sender, EventArgs e)
        {
            ProductInfoShowForm productInfoShowForm = new ProductInfoShowForm();
            productInfoShowForm.ShowDialog();
        }

        // 查询包房(标签页)显示桌台信息
        public void ShowDeskInfoByRoom()
        {
            TabPage selectedTab = tabControl2.SelectedTab;
            // 获取包房信息
            DataRow roominfo = selectedTab.Tag as DataRow;

            ListView listView;
            if (selectedTab.Controls.Count == 0)
            {
                listView = new ListView();
                selectedTab.Controls.Add(listView);
            }
            else
            {
                listView = selectedTab.Controls[0] as ListView;
            }

            // 获取包房id
            int roomid = Convert.ToInt32(roominfo[0]);
            Console.WriteLine(roomid + "================");
            // 根据包房类别(标签页)查询包房信息
            DataTable dataTable = _deskBLL.QueryDeskInfoByRoomId(roomid);

            listView.Dock = DockStyle.Fill; // 设置充满窗体
            listView.View = View.LargeIcon; // 设置大图标
            listView.LargeImageList = imageList1; // 设置大图标
            listView.MultiSelect = false; // 设置单选

            listView.Items.Clear(); // 清空原有的列表项

            foreach (DataRow deskInfo in dataTable.Rows)
            {
                Console.WriteLine(deskInfo[0] + " " + deskInfo[1]);
                ListViewItem listViewItem = new ListViewItem(deskInfo[2].ToString()); // 添加到列表中
                listViewItem.ImageIndex = Convert.ToInt32(deskInfo[4]); // 设置图标
                listViewItem.Tag = deskInfo; // 设置数据
                listView.Items.Add(listViewItem);
            }
        }

        // 切换包房(标签页)的切换事件
        private void tabControl2_SelectedIndexChanged(object sender, EventArgs e)
        {
            ShowDeskInfoByRoom();
        }

        // 定义事件
        public event EventHandler AddOrderEvent;

        // 顾客开单的事件
        private void btnBiling_Click(object sender, EventArgs e)
        {
            TabPage selectedTab = tabControl2.SelectedTab;
            DataRow roomInfo = selectedTab.Tag as DataRow;

            ListView listView;
            if (selectedTab.Controls.Count == 0)
            {
                MessageBox.Show("当前标签页未加载桌台信息,请稍候重试。");
                return;
            }
            else
            {
                listView = selectedTab.Controls[0] as ListView;
            }

            int count = listView.SelectedItems.Count;
            if (count == 0)
            {
                MessageBox.Show("请选择开单的桌台");
                return;
            }

            ListViewItem listViewItem = listView.SelectedItems[0];
            DataRow deskInfo = listViewItem.Tag as DataRow;

            if (Convert.ToInt32(deskInfo[4]) == 1)
            {
                MessageBox.Show("请选择空闲的桌台");
            }
            else
            {
                OrderAddForm orderAddForm = new OrderAddForm(); // 创建订单添加界面
                OrderDTO orderDTO = new OrderDTO(); // 创建订单数据传输对象
                orderDTO.RoomId = Convert.ToInt32(roomInfo[0]); // 设置房间编号
                orderDTO.RoomName = roomInfo[1].ToString(); // 设置房间名称

                Console.WriteLine(roomInfo[2]); // 设置房间消费
                orderDTO.RoomMinConsumption = Convert.ToInt32(roomInfo[2]); // 设置房间最低消费

                orderDTO.DeskId = Convert.ToInt32(deskInfo[0]); // 设置桌台编号
                orderDTO.DeskName = deskInfo[2].ToString(); // 设置桌台名称

                // 订阅订单添加界面的获取数据事件
                AddOrderEvent += orderAddForm.SetData;
                // 发布事件
                AddOrderEvent.Invoke(this, orderDTO);

                orderAddForm.ShowDialog(); // 显示订单添加界面
            }
        }
    }
}
posted @ 2025-02-19 22:31  世界改变程序员  阅读(33)  评论(0)    收藏  举报