コード例 #1
0
        // Button 'Find room'
        // Display available rooms for selected date
        private void buttonSearchRoomBookingAvailable_Click(object sender, EventArgs e)
        {
            if (listBoxGuest.SelectedIndex > -1 && comboBoxRoomType.SelectedIndex > -1)
            {
                int    roomtypeid = Convert.ToInt32(comboBoxRoomType.SelectedValue);
                string datefrom   = datePickerArrival.Value.ToString("yyyy-MM-dd");
                string dateto     = datePickerDeparture.Value.ToString("yyyy-MM-dd");

                // Clear flowlayoutpanel and set parameter to enable drag and drop
                flowLayoutPanel1.Controls.Clear();
                roomchecked = false;
                roomid      = null;

                ValidateInput();
                // Check all relevant fields for input
                if (validinput)
                {
                    // Check available rooms
                    MySqlDataReader getAvailableRooms = DBGetData.GetAvailableRooms(roomtypeid, datefrom, dateto);

                    while (getAvailableRooms.Read())
                    {
                        // Generate panels to indicate available rooms
                        // Create event handlers for click and drag and drop with values from listBoxGuest
                        Panel p = new Panel();
                        p.Name      = getAvailableRooms["roomid"].ToString();
                        p.Size      = new Size(79, 35);
                        p.BackColor = Color.Yellow;
                        p.AllowDrop = true;
                        // Setup event handlers for DragOver, DragDrop and Click
                        p.DragDrop += new System.Windows.Forms.DragEventHandler(this.panelRoom_DragDrop);
                        p.DragOver += new System.Windows.Forms.DragEventHandler(this.panelRoom_DragOver);
                        p.Click    += new EventHandler(this.panelRoom_Click);
                        this.flowLayoutPanel1.Controls.Add(p);
                        // Draw room number on panel
                        Font drawFont = new Font("Tahoma", 12);
                        p.Paint += (ss, ee) =>
                        {
                            ee.Graphics.DrawString(p.Name, drawFont, Brushes.Black, 20, 8);
                        };
                    }

                    getAvailableRooms.Dispose();
                }
            }
        }