菜单项 - 按钮 - 以及如何使它们在 C#/MySql POS 中交互

Menu items -buttons- and how to make them interact in a C#/MySql POS

希望你们到目前为止都过得愉快。

我一直在 CSharp/MySql 上开发一个 POS 应用程序,现在我对如何管理按钮事件感到很困惑(即,到目前为止我的想法是,如果服务员点击某个table号码后点击某个产品,然后这将生成一个插入数据库供以后查询,并带有一个标志,表示支票已打开)...

到目前为止的原始编码(我仍然需要调整按钮名称和功能,但第一个按钮点击案例描述了我正在尝试实现的想法):

    String product = string.Empty;
    String price = string.Empty;
    Double total = 0.0;

    string operand1 = string.Empty;
    string operand2 = string.Empty;
    string result;
    char operation; 

    public LaCarta()
    {
        InitializeComponent();
        displayTime();
    }

    private void LaCarta_Load(object sender, EventArgs e) 
    { 
        CoronaClara.Click += new EventHandler(btn_Click);
        CoronaLight.Click += new EventHandler(btn_Click);
        CoronaObscura.Click += new EventHandler(btn_Click);
        Refresco.Click += new EventHandler(btn_Click);
        NaranjadaGde.Click += new EventHandler(btn_Click);
        NaranjadaCh.Click += new EventHandler(btn_Click);
        LimonadaGde.Click += new EventHandler(btn_Click);
        LimonadaCh.Click += new EventHandler(btn_Click);
        HorchataGde.Click += new EventHandler(btn_Click);
        HorchataCh.Click += new EventHandler(btn_Click);
        AguaDePepinoGde.Click += new EventHandler(btn_Click);
        NaipeCorazon.Click += new EventHandler(btn_Click);
        NaipeDiamante.Click += new EventHandler(btn_Click);
        NaipeEspada.Click += new EventHandler(btn_Click);
        NaipeTrebol.Click += new EventHandler(btn_Click);
        AguaDePepinoCh.Click += new EventHandler(btn_Click);
        CervezaPacifico.Click += new EventHandler(btn_Click);
        CervezaLeon.Click += new EventHandler(btn_Click);
        CervezaVictoria.Click += new EventHandler(btn_Click);
        NegraModelo.Click += new EventHandler(btn_Click);
        CubetaDe20Pz.Click += new EventHandler(btn_Click);
        CubetaDe10Pz.Click += new EventHandler(btn_Click);
        CaguamaCorona.Click += new EventHandler(btn_Click);
        JarraDeCheve.Click += new EventHandler(btn_Click);
        LitroDeCheve.Click += new EventHandler(btn_Click);
        MiniTarro.Click += new EventHandler(btn_Click);
        MicheladaGde.Click += new EventHandler(btn_Click);
    }

    private void displayTime()
    {
        label21.Text = DateTime.Now.ToLongTimeString();
        label22.Text = DateTime.Now.ToLongDateString();
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        char open = 'Y';
        int table = comboBox1.SelectedIndex;
        MySqlConnection mcon = new MySqlConnection("server=localhost;database=database;username=root;password=***");

        //Int32.TryParse(comboBox1.SelectedValue.ToString(), out val);
        try
        {

            string query = "SELECT * FROM check where table_id = '" + table + "' and open = '" + open + "'";   
           // dataGridView1.DataSource = getData(query);

        }
        catch (Exception)
        {
            MessageBox.Show("Error loading table");
        }
        finally {
            mcon.Close();
        }
    }

    void btn_Click(object sender, EventArgs e)
    {
        try
        {
            Button btn = sender as Button;
            MySqlConnection mcon = new MySqlConnection("server=localhost;database=database;username=root;password=***");
            mcon.Open();

            switch (btn.Name)
            {
                case "CoronaClara":
                    product = "CoronaClara";
                    LaCuenta.Items.Add(product);

                    string select = "SELECT price FROM products where prodnom = '" + product + "';";
                    MySqlCommand cmd = new MySqlCommand(select, mcon);
                    object result = cmd.ExecuteScalar();

                    precio = Convert.ToString(result);

                    //precio = Convert.ToDouble(result);
                    LaCuenta.Items.Add(product + " " + "$" + price);

                    txtInput.Text += price;


                    break;

                case "btnTwo":
                    //txtInput.Text += "2";
                    break;
                case "btnThree":
                    //txtInput.Text += "3";
                    break;
                case "btnFour":
                    //txtInput.Text += "4";
                    break;
                case "btnFive":
                    //txtInput.Text += "5";
                    break;
                case "btnSix":
                    //txtInput.Text += "6";
                    break;
                case "btnSeven":
                    //txtInput.Text += "7";
                    break;
                case "btnEight":
                    //txtInput.Text += "8";
                    break;
                case "btnNine":
                    //txtInput.Text += "9";
                    break;
                case "btnZero":
                    //txtInput.Text += "0";
                    break;
                case "btnDot":
                    //if (!txtInput.Text.Contains("."))
                    //    txtInput.Text += ".";
                    break;

            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Sorry for the inconvenience, Unexpected error occured. Details: " +
                ex.Message);
        }
    }


    private void bttn1_Click(object sender, EventArgs e)
    {
        txtInput.Text = operand1;
        operation = '*';
        txtInput.Text = string.Empty;
    }

    private void bttn2_Click(object sender, EventArgs e)
    {
        operand1 = txtInput.Text;
        operation = '*';
        txtInput.Text = string.Empty;
    }

    private void bttn3_Click(object sender, EventArgs e)
    {
        operand1 = txtInput.Text;
        operation = '*';
        txtInput.Text = string.Empty;
    }

    private void bttn4_Click(object sender, EventArgs e)
    {
        operand1 = txtInput.Text;
        operation = '*';
        txtInput.Text = string.Empty;
    }

    private void btnEqual_Click(object sender, EventArgs e)
    {
        operand2 = txtInput.Text;

        double opr1, opr2;
        double.TryParse(operand1, out opr1);
        double.TryParse(operand2, out opr2);

        result = (opr1 * opr2).ToString();
        txtInput.Text = result.ToString();
    } 
 }

这基本上是我想要相互交互的元素:图像按钮、列表框、乘法器、网格视图,您可以从中 select 一些 table 或客户名称,以及总金额。

所以我的问题是:

非常感谢您的宝贵时间。

我看到你的代码有很多缺陷!首先尝试在单个实用程序函数中重新组合数据库连接查询。这将减少代码冗余,相信我会大大简化您的生活。其次,我确信产品不仅仅是一个字符串。它包含名称、价格等...创建一个 class 产品并添加所有详细信息,这将允许您获取信息。更容易。最后,在 属性 面板的设计模式中有事件部分,单击它并为每个按钮将 Click 事件设置为 btn_Click。

如果我没看错的话,对于你的第二个问题,为产品创建一个class会对你有所帮助。