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; /* References */ // Using a delegate to trigger method on the customer view form // https://www.coderslexicon.com/passing-data-between-forms-using-delegates-and-events/ namespace QueueSys { public partial class frmEmployeeView : Form { public frmEmployeeView() { InitializeComponent(); } // Our delegate (which "points" at any method which takes an object and EventArgs) // Look familiar? This is the signature of most control events on a form public delegate void SendMessage(object obj, EventArgs e); // Here is the event we trigger to send messages out to listeners public event SendMessage OnSendMessage; /* Execute when program / main form loads. * Pop up the customer view screen to drag onto second monitor * creates our second form, says "attach its MessageReceived function to the event" */ private void frmEmployeeView_Load(object sender, EventArgs e) { frmCustomerView frm = new frmCustomerView(); OnSendMessage += frm.MessageReceived; frm.Show(); } /* Enable options menu. */ private void optionsToolStripMenuItem_Click(object sender, EventArgs e) { frmOptions frm = new frmOptions(); frm.Show(); frm.Activate(); } // Exits the application. private void exitAltF4ToolStripMenuItem_Click(object sender, EventArgs e) => Application.Exit(); private void generateReportToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("To-do: Generate excel report from SQL Database."); } private void btnAdd_Click(object sender, EventArgs e) { SqliteDataAccess sda = new SqliteDataAccess(); EmployeeView evNewCx = new EmployeeView(); evNewCx.customer_name = tbCustomerName.Text; evNewCx.num_bags = Int32.Parse(cbNumBags.Text); evNewCx.employee = tbEmployeeName.Text; sda.SaveCustomer(evNewCx); //Invoke the delegate to update customer view. OnSendMessage?.Invoke(this, e); tbCustomerName.Text = ""; cbNumBags.Text = ""; tbEmployeeName.Text = ""; MessageBox.Show("Customer has been added!", "Queue System", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }